设为首页 加入收藏

TOP

1.3.2 对位图进行伸缩处理
2013-10-07 00:20:58 来源: 作者: 【 】 浏览:66
Tags:1.3.2 位图 进行 伸缩 处理

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】

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇1.5 面向对象的图像处理算法实现 下一篇1.4 设备无关位图(DIB)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: