MFC的CImage图片随Picture控件大小变化时边缘残留问题
要实现的功能是打开一张图片,图片控件大小随对话框大小变化,图片随控件大小变化。现在功能已经都实现了,但是在缩小对话框的时候,之前的图片会有残留,就会出现如下图的问题:

部分代码如下:
请前辈们看看怎么解决

部分代码如下:
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
}
请前辈们看看怎么解决

...全文
相关推荐
利用MFC的Picture控件显示图像和视频/摄像头画面(VS2008+OpenCV2.0)
**MFC Picture控件**: MFC Picture控件是MFC框架提供的一种用于显示图像的控件,它可以显示BMP、JPEG、GIF等格式的图片。
MFC实现Button控件打开本地照片显示在Picture控件中
当用户点击Button时,系统会弹出文件选择对话框,用户选择一张图片后,图片将自动显示在Picture控件上。
VS2013MFC获取鼠标位于picture控件实时坐标,和点击处坐标
本篇文章将详细讲解如何实现获取鼠标在Picture控件上的实时坐标以及点击时的坐标。首先,我们需要理解MFC中的CStatic类,它是用于创建各种类型静态控件的基础类,包括Picture控件。
MFC VS2010 图片控件+滚动条
本主题将深入探讨如何在MFC应用中使用Picture Control来展示大尺寸图片,并在图片过大无法完全显示时,集成滚动条以便用户浏览。
MFC用OpenCV打开摄像头显示视频或图像(Picture Control控件)
在MFC对话框中添加Picture Control控件,这可以通过Visual Studio的资源编辑器完成。选择对话框,在控件工具箱中找到Picture Control,然后拖放到对话框上。


界面
