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