为什么StretchBlt缩放后成了这个样子

diandian0122 2012-05-20 12:14:19
在内存中画图,然后用StretchBlt画到picturebox上,怎么缩放后有一部分没出来,button1代码如下:
CDC* pDC = GetDlgItem(IDC_STATIC)->GetDC();
CDC memDC;
memDC.CreateCompatibleDC(pDC);
CRect RectPicturebox;
GetDlgItem(IDC_STATIC)->GetClientRect(&RectPicturebox);
CBitmap bmp;
bmp.CreateCompatibleBitmap(pDC,RectPicturebox.Width(),RectPicturebox.Height());
CBitmap *pOldbmp = memDC.SelectObject(&bmp);
CRect rect;
rect.bottom = 400;
rect.top = 0;
rect.left = 0;
rect.right = 400;
memDC.Ellipse(&rect);
pDC->SetStretchBltMode(STRETCH_HALFTONE | STRETCH_ORSCANS);
pDC->StretchBlt(0,0,RectPicturebox.Width(),RectPicturebox.Height(),&memDC,0,0,rect.Width(),rect.Height(),SRCCOPY);

...全文
120 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
diandian0122 2012-05-20
  • 打赏
  • 举报
回复
我就是想把源里rect画个大的Rect,然后用StretchBlt缩放到小的RectPctureBox里面,如果把rect弄成和rectpicturebox一样大,不就看不出来缩放的效果了吗
Eleven 2012-05-20
  • 打赏
  • 举报
回复

CDC* pDC = GetDlgItem(IDC_STATIC1)->GetDC();
CDC memDC;
memDC.CreateCompatibleDC(pDC);
CRect RectPicturebox;
GetDlgItem(IDC_STATIC1)->GetClientRect(&RectPicturebox);
CBitmap bmp;
bmp.CreateCompatibleBitmap(pDC,RectPicturebox.Width(),RectPicturebox.Height());
CBitmap *pOldbmp = memDC.SelectObject(&bmp);
CRect rect;
rect.bottom = RectPicturebox.Height();
rect.top = 0;
rect.left = 0;
rect.right = RectPicturebox.Width();
memDC.Ellipse(&rect);
pDC->SetStretchBltMode(STRETCH_HALFTONE | STRETCH_ORSCANS);
pDC->StretchBlt(0,0,RectPicturebox.Width(),RectPicturebox.Height(),&memDC,0,0,rect.Width(),rect.Height(),SRCCOPY);
memDC.SelectObject(pOldbmp);
memDC.DeleteDC();
GetDlgItem(IDC_STATIC1)->ReleaseDC(pDC);
Eleven 2012-05-20
  • 打赏
  • 举报
回复
把上面的IDC_STATIC这个ID修改一下
Eleven 2012-05-20
  • 打赏
  • 举报
回复
CRect rect;
rect.bottom = 400;
rect.top = 0;
rect.left = 0;
rect.right = 400;
你这里的400,400是图片的大小码?
zgl7903 2012-05-20
  • 打赏
  • 举报
回复
rect 应该取图片的尺寸

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧