您的位置:首页 > 其它

Bimmap 成像用bitblt 缩放问题

2016-11-08 13:32 134 查看
BitBlt不能变尺寸,但是StrectchBlt可以变尺寸,在使用StrectchBlt时要注意,首先要设置一下SetStretchBltMode,通常设成HALFTONE,这样缩放时就不会失真。

SetStretchBltMode 模式可以参考:

http://blog.csdn.net/hgy413/article/details/6785513

推荐HALFTONE, 但可能会消耗资源一点.

1 void CAnalysisVideoPlayerDlg::DrawImage( HBITMAP hbitmap, int x, int y, CDC *pDC, int nSrcW, int nSrcH)
2 {
3     HBITMAP OldBitmap;
4     CDC MemDC;
5     MemDC.CreateCompatibleDC(pDC);
6     OldBitmap=(HBITMAP)MemDC.SelectObject(hbitmap);
7     CRect rect;
8     GetClientRect(&rect);
9     if (pDC){
10         pDC->SetStretchBltMode(HALFTONE);
11         //pDC->SetStretchBltMode(COLORONCOLOR);
12         pDC->StretchBlt(x, y, rect.Width(), rect.Height(), &MemDC, 0, 0, nSrcW, nSrcH, SRCCOPY);
13         //pDC->BitBlt(x,y,rect.Width(),rect.Height(),&MemDC,0,0,SRCCOPY);
14     } else {
15         ASSERT(0);
16     }
17     MemDC.SelectObject(OldBitmap);
18     ReleaseDC(&MemDC);
19 }


使用示例.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: