MFC的CImage图片随Picture控件大小变化时边缘残留问题

冰不语
博客专家认证
2016-05-06 07:30:24
要实现的功能是打开一张图片,图片控件大小随对话框大小变化,图片随控件大小变化。现在功能已经都实现了,但是在缩小对话框的时候,之前的图片会有残留,就会出现如下图的问题:


部分代码如下:

void CMFCImageDlg::OnBnClickedButton1()
{
// TODO: Add your control notification handler code here
。。。。。。。省略

//显示CImage图片
img_show = img1;
CWnd *pWnd = GetDlgItem(IDC_STATIC);//获得pictrue控件窗口的句柄
CDC *pDC = pWnd->GetDC();//获得pictrue控件的DC
if (!img_show.IsNull())
{
img_show.Draw(pDC->m_hDC, pic_rect); //将图片画到Picture控件表示的矩形区域
}

ReleaseDC(pDC);//释放picture控件的DC
}

void CMFCImageDlg::OnSize(UINT nType, int cx, int cy)
{
CDialogEx::OnSize(nType, cx, cy);

// TODO: Add your message handler code here

GetClientRect(&dlg_rect);
GetDlgItem(IDC_BUTTON1)->GetClientRect(&btn_rect);
GetDlgItem(IDC_STATIC)->GetClientRect(&pic_rect);

//设置按钮的位置
btn_rect.MoveToX(dlg_rect.right - 100);
btn_rect.MoveToY(dlg_rect.top + 50);

//设置图片控价的大小
if (get_image == true)
{
pic_rect.right = 3 * dlg_rect.Width() / 4;
pic_rect.bottom = pic_rect.right * aspect_ratio;
}
else
{
pic_rect.right = 3 * dlg_rect.Width() / 4;
pic_rect.bottom = dlg_rect.Height();
}

GetDlgItem(IDC_STATIC)->MoveWindow(pic_rect);
GetDlgItem(IDC_BUTTON1)->MoveWindow(btn_rect);

//显示CImage图片
CWnd *pWnd = GetDlgItem(IDC_STATIC);//获得pictrue控件窗口的句柄
CDC *pDC = pWnd->GetDC();//获得pictrue控件的DC
pDC->FillSolidRect(pic_rect, RGB(0, 0, 0));
if (!img1.IsNull())
{
img_show = img1;
img_show.Draw(pDC->m_hDC, pic_rect);
}

ReleaseDC(pDC);//释放picture控件的DC
}



请前辈们看看怎么解决
...全文
247 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
冰不语 2016-05-06
  • 打赏
  • 举报
回复
已经解决,把所有的画图都写在OnPaint()函数中,同时把CDialogEx::OnPaint(); 注释掉就可以了。

15,979

社区成员

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

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