OnEraseBkgnd擦除背景的问题,急!

XGYHITSZ2012 XGYHITSZ2012 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我在单文档窗口加载一幅图片,然后需要完成放大或缩小的功能,如果想要擦除窗口时窗口不闪,需要Invalidate参数加上FALSE,自己重新写出来OnEraseBkgnd
我的重写的OnEraseBkgnd,返回TRUE,可是缩小后背景就是无法擦除啊
哪位大牛知道,我是不是少了什么步骤?初学MFC,真的不大懂

BOOL CRectifiView::OnEraseBkgnd(CDC* pDC)
{

return TRUE; //CScrollView::OnEraseBkgnd(pDC);
}
void CRectifiView::OnZoomout()
{
// TODO: 在此添加命令处理程序代码
//m_bmZoom = ZOOMOUT;
m_scale *= 1.1;
Invalidate(FALSE);
}

void CRectifiView::OnZoomin()
{
// TODO: 在此添加命令处理程序代码
//m_bmZoom = ZOOMIN;
m_scale *= 0.9;
int width = int(m_pImg.Width()*m_scale);
int height = int(m_pImg.Height()*m_scale);

CRect rect;
GetClientRect(&rect);

int scroll_x = GetScrollPos(SB_HORZ);
int scroll_y = GetScrollPos(SB_VERT);

if((rect.right+scroll_x)>width)
{
scroll_x = (width - rect.right)>0?(width - rect.right):0;
}

if((rect.bottom+scroll_y)>height)
{
scroll_y = (height - rect.bottom)>0?(height - rect.bottom):0;
}

SetScrollPos(SB_HORZ, scroll_x);
SetScrollPos(SB_VERT, scroll_y);

Invalidate(FALSE);
}

...全文

相关推荐

评论 11
收藏 已收藏
分享
返回顶部
XGYHITSZ2012
界面 15,976 成员 115,866 内容