1.3.2 对位图进行伸缩处理

2013-10-07 00:20:58 · 作者: · 浏览: 69

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伸缩显示在250450的矩形区域,因与图像原长宽比不同,因此景物出现了变形,图1-13所示是伸缩显示的结果。
  
(点击查看大图)图1-13  伸缩显示的结果
【责任编辑:夏书 TEL:(010)68476606】

回书目   上一节   下一节