在VS环境下,用C++实现清除GDI+产生的图形

在VS环境下,用C++实现清除GDI+产生的图形我是新手,刚使用GDI+,右边的三个输入x,y,和旋转角度。用vb可以清除掉之前产生的图形,但是c++里面我还没有找到可以... 在VS环境下,用C++实现清除GDI+产生的图形

我是新手,刚使用GDI+,右边的三个输入x,y,和旋转角度。用vb可以清除掉之前产生的图形,但是c++里面我还没有找到可以清除的语句。

void Cc图形练习Dlg::OnBnClickedButton1()
{
//system("cls");
//_clean();

Graphics graphics(this->m_hWnd);
CString str1;
CString str2;
CString str3;

int i1;
int i2;
int i3;

GetDlgItem(IDC_EDIT1)->GetWindowText(str1);
GetDlgItem(IDC_EDIT2)->GetWindowText(str2);
GetDlgItem(IDC_EDIT3)->GetWindowText(str3);

i1=_ttoi(str1);
i2=_ttoi(str2);
i3=_ttoi(str3);

Pen greenPen(Color(255,0,255,0),3);
graphics.RotateTransform(i3);
graphics.DrawRectangle(&greenPen,i1,i2,100,50);
}
代码如上。请大神指点。
展开
 我来答
空雪梦见
2015-01-31 · TA获得超过5597个赞
知道大有可为答主
回答量:2522
采纳率:75%
帮助的人:1188万
展开全部
InvalidateRect(NULL);
MFC里应该是这样写。这代码会让windows把当前窗口标记为需要重绘,然后就会重新画一遍窗口,你后面自己画上去的东西就没了
追问
已经很好的实现了这个功能。但是InvalidateRect(NULL);应该放在哪里,才会让第二次点击的时候直接清除上一次的图形。而不是重新设置一个按钮。
追答
……才发现居然是点按钮的那个里面绘图。这样的话就不能用InvalidateRect了。
你可以获取画窗口背景用的Brush然后画一个填充矩形来填充整个窗口。
不会获取的话也可以创建一个颜色一样的Brush来填充
(我自己的思路可能比较麻烦,GetClassName获取窗口的类名,GetClassInfo获取窗口类信息,里面有一个hbrBackground就是画窗口背景用的Brush
匿名用户
2015-01-29
展开全部
重画就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式