11.1.2 将位图文件绘制成对话框背景
在编写应用程序时,为了美化界面,通常会为对话框添加背景,但是使用控件显示图片时,当对话框大小改变时要改变显示图片的大小就很麻烦。为了解决这一问题,可以使用CDC类的StretchBlt函数将图片以对话框的大小绘制到对话框中,这样在对话框的大小改变时只要重新绘制一下图片就可以了。StretchBlt函数用位图的指定矩形部分和设备环境中指定的矩形区域贴图,如果位图的矩形部分同当前设备环境部分大小不一致,则将位图进行压缩或放大。
语法:
BOOL StretchBlt( int x, int y, int nWidth, int nHeight, CDC* pSrcDC, int xSrc, int ySrc, int nSrcWidth, int nSrcH eight, DWORD dwRop );
|
StretchBlt函数参数说明如表11.4所示。
表11.4 StretchBlt函数参数说明
参 数 描 述
x 左上角横坐标
y 左上角纵坐标
nWidth 显示宽度
nHeight 显示高度
pSrcDC 设备环境指针
xSrc 复制位图左上角横坐标
ySrc 复制位图左上角纵坐标
nSrcWidth 源位图宽度
nSrcHeight 源位图高度
dwRop 光栅操作类型
例如:
将位图文件绘制成对话框背景的程序设计步骤如下。
ch1101实例位置:mr\11\sl\01
(1)创建一个基于对话框的应用程序。
(2)在工作区窗口选择ResourceView视图,右键单击任意节点,在快捷菜单中选择Insert菜单项,向对话框中导入一个BMP位图资源。
(3)在对话框的OnPaint函数中添加代码,将BMP位图资源绘制成对话框背景,代码如下:
void CBackdropDlg::OnPaint() { ……//此处代码省略 CRect rect; GetClientRect(&rect); CDC* pDC = GetDC(); //将位图选进设备场景中 CBitmap cbitmap; cbitmap.LoadBitmap(IDB_BITMAP1); CDC memdc; BITMAP bmp; memdc.CreateCompatibleDC(pDC); memdc.SelectObject(&cbitmap); cbitmap.GetBitmap(&bmp); pDC->StretchBlt(rect.left,rect.top,rect.Width(),rect.Height(),&memdc,0,0, bmp.bmWidth,bmp.bmHeight,SRCCOPY); }
|
(4)程序运行效果如图11.1所示。

图11.1 将位图文件绘制成对话框背景
【责任编辑:
阚书 TEL:(010)68476606】