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

冰不语 冰不语 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
要实现的功能是打开一张图片,图片控件大小随对话框大小变化,图片随控件大小变化。现在功能已经都实现了,但是在缩小对话框的时候,之前的图片会有残留,就会出现如下图的问题:


部分代码如下:

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
}



请前辈们看看怎么解决
...全文

相关推荐

评论 1
收藏 已收藏
分享
返回顶部
冰不语
冰不语 领域专家: 人工智能技术领域 领域专家: 人工智能技术领域
界面 15,976 成员 115,866 内容