Bimmap 成像用bitblt 缩放问题

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.CreateCompatibleDCpDC);
 6     OldBitmap=HBITMAP)MemDC.SelectObjecthbitmap);
 7     CRect rect;
 8     GetClientRect&rect);    
 9     if pDC){
10         pDC->SetStretchBltModeHALFTONE);
11         //pDC->SetStretchBltModeCOLORONCOLOR);
12         pDC->StretchBltx, y, rect.Width), rect.Height), &MemDC, 0, 0, nSrcW, nSrcH, SRCCOPY);
13         //pDC->BitBltx,y,rect.Width),rect.Height),&MemDC,0,0,SRCCOPY);
14     } else {
15         ASSERT0);
16     }
17     MemDC.SelectObjectOldBitmap);
18     ReleaseDC&MemDC);
19 }

使用示例.

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注