VC StretchBlt图像失真求解

以下是我的代码,使用了SetStretchBltMode也一样啊voidCAKeyST::OnPaint(){CPaintDCdc(this);//deviceconte... 以下是我的代码,使用了SetStretchBltMode也一样啊
void CAKeyST::OnPaint()
{
CPaintDC dc(this); // device context for painting

CBitmap m_bitmap;
m_bitmap.LoadBitmap(IDB_BITMAP1);

CDC dcImage;
if (!dcImage.CreateCompatibleDC(&dc))
return;

BITMAP bm;
m_bitmap.GetBitmap(&bm);

CBitmap* pOldBitmap = dcImage.SelectObject(&m_bitmap);

CRect WinRect;
GetClientRect(WinRect);

dc.SetStretchBltMode(STRETCH_HALFTONE|STRETCH_ORSCANS);
dc.StretchBlt(0,0,WinRect.right,WinRect.bottom,&dcImage,0,0,
bm.bmWidth, bm.bmHeight,SRCCOPY);

dcImage.SelectObject(pOldBitmap);
dcImage.DeleteDC();
展开
 我来答
bhtzu
推荐于2016-04-06 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4207万
展开全部
应该是资源位图失真。
你可以先BitBlt代替StretchBlt试试,这个函数是栅格模式,无放缩看看效果。
在资源中打开IDB_BITMAP1看看是不是已经失真了。VC资源位图默认对16/256色支持,真彩需要特殊处理。你也可以直接用外部bmp文件,或者使用CImage使用外部jpg文件。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式