问题描述
我用vc++.net2005建了一个clrwindows应用程序项,然后用:System::Drawing::Pen^myPen=gcnewSystem::Drawing::Pen(System::Drawing::Color::Red);System::Drawing::Graphics^formGraphics;formGraphics=this->CreateGraphics();formGraphics->DrawLine(myPen,50,50,200,200);deletemyPen;deleteformGraphics;上面语句画了多条直线,但这个窗口被其它窗口,遮了,或者最小化还原后线就不再了,请问要怎么处理,MSDN上说要重写virtualvoidOnPaint(PaintEventArgs^e)override我弄了两三天也没弄明白,怎么写,请问怎么写啊,第一次发帖,若有不敬,请包涵..
解决方案
解决方案二:
给你的Fomr1.h加上这个函数:public:virtualvoidOnPaint(PaintEventArgs^e)override{Form::OnPaint(e);System::Drawing::Pen^myPen=gcnewSystem::Drawing::Pen(System::Drawing::Color::Red);System::Drawing::Graphics^formGraphics=e->Graphics;;formGraphics->DrawLine(myPen,50,50,200,200);//deletemyPen;//deleteformGraphics;}OnPaint是Form的一个虚函数,它在需要窗体重绘的时候自动执行,如果我们重写了这个方法,窗体重绘的时候就会执行我们的代码。还有就是C++.NET同样采用垃圾回收器管理托管对象,理论上说无需使用delete运算符“删除”它。delete并没有真的“删除”它,而是执行了对象的Dispose方法而已,对于大部分对象,不需要立刻执行它的Dispose方法。在之后垃圾回收器清理这个对象的时候会调用它。