|
1.3.2 对位图进行伸缩处理
为了显示需要,可以对位图进行伸缩处理,这可以由StretchBlt()函数来完成。StretchBlt()函数的原型如下:
BOOL StretchBlt(int x, int y, int nWidth, int nHeight, CDC* pSrcDC, int xSrc, int ySrc, int nSrcWidth, int nSrcHeight, DWORD dwRop);
|
其中,nSrcWidth和nSrcHeight用来指定要复制原图像的宽度和高度,其他参数与BitBlt()函数相同。
以下是我们在工程chap1_3中实现的位图伸缩显示,读者可以运行程序查验显示结果。
void CChap1_3View::OnDraw(CDC* pDC) { //CBitmap对象 CBitmap bitmap;
//设备环境类对象 CDC dcMemory;
//加载资源位图 bitmap.LoadBitmap(IDB_building);
//创建内存设备环境 dcMemory.CreateCompatibleDC(pDC);
//把位图选进内存设备环境,并保存旧的GDI位图对象 CBitmap *oldbitmap=dcMemory.SelectObject(&bitmap);
//将300*400的图像伸缩显示在以(0,0)点开始的250*450的一个区域内 pDC->StretchBlt(0,0,450,250, &dcMemory,0,0,400,300,SRCCOPY);
//释放bitmap,恢复原GDI位图 dcMemory.SelectObject(oldbitmap); } | 程序将building伸缩显示在250450的矩形区域,因与图像原长宽比不同,因此景物出现了变形,图1-13所示是伸缩显示的结果。
|
| (点击查看大图)图1-13 伸缩显示的结果 |
【责任编辑: 夏书 TEL:(010)68476606】
|