MFC 绘制矩形时怎么清除上一个矩形?

我的程序加上Invalidate()之后就不能画矩形了,想在每次绘制前清除上一次绘制的图形应该怎么做?LRESULTCClientDemoDlg::OnWMScreenF... 我的程序加上Invalidate()之后就不能画矩形了,想在每次绘制前清除上一次绘制的图形应该怎么做?

LRESULT CClientDemoDlg::OnWMScreenFocus(WPARAM wParam, LPARAM lParam)
{
// Invalidate();
CRect rect;
GetDlgItem(m_FocusScreenItem)->GetWindowRect(&rect);
ScreenToClient(&rect);

CBrush br;
CPen pen;

pen.CreatePen(PS_SOLID,3,RGB(121,146,221));
br.CreateStockObject(NULL_BRUSH);//8.26

CClientDC dc(this);
dc.SelectObject(&pen);
dc.SelectObject(&br);

dc.Rectangle(&rect);

return true;
}
不是在同一个位置的,是想画第二个时清除第一个。
展开
 我来答
布列瑟农s狼
2013-12-19 · TA获得超过226个赞
知道小有建树答主
回答量:130
采纳率:0%
帮助的人:127万
展开全部
设置绘图模式 dc.SetROP2(XOR_NOT)里面的参数可能差不多是这样的,具体你确认下,这种模式是异或模式,即如果重复
绘制了则清除。步骤就是dc.SetROP2(XOR_NOT);dc.rectangle(oldrect);dc.rectangle(newrect);
分享收藏君
2013-12-19
知道答主
回答量:11
采纳率:0%
帮助的人:3.8万
展开全部
Invalidate();一般加在return true前,用于更新视图。
清除图形的话,绘制白底矩形就可以了
在删除图形位置,绘制与用背景色填充的矩形,比如,你的背景是灰色,就重新绘制灰色矩形
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
春夏秋冬
2013-12-19 · 知道合伙人教育行家
春夏秋冬
知道合伙人教育行家
采纳数:490 获赞数:1419

向TA提问 私信TA
展开全部
1、继承CWnd函数:
InvalidateRect(NULL);
UpdateWindow();
2\更多交流参考我空间文章。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式