日期:2014-05-19  浏览次数:20900 次

画图问题,为什么用graphics类画图,画完以后最小化再最大化本来画的东西就没有了
画图问题,为什么用graphics类画图,画完以后最小化再最大化本来画的东西就没有了


高手指教哈..

------解决方案--------------------
你一定没有在Paint事件里进行绘制.
所以你要添加Paint事件且用里面的e.Graphics进行在窗体无效时的绘制,或重写OnPaint方法进行绘制才行.
------解决方案--------------------
系统重绘掉了
把代码写在OnPaint里面
------解决方案--------------------
要重写OnPaint方法,因为在窗体重绘的时候也要绘自己的东西
protected override OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
//绘自己的东西......
}
------解决方案--------------------
可以对内在中的Iamge对象绘制 在Paint的时候显示这个Image
楼主应该看看Programming Windows 5th edition中关于鼠标画线的代码来了解Windows绘制的工作原理
------解决方案--------------------
Windows通常并不保存每个窗口的信息,太耗内存.
Windows要求每个控件,窗体在任何时候都可以重画,Windows会跟踪窗体的那些部分是不透明的,当这些不透明的部分不再被遮住时,Windows会要求应用程序重新绘制窗体或者原来那些不透明的部分;
------解决方案--------------------
我想信,你画图的时候界面很闪的.

新建一个bitmap对象(和画布一样大小)
画的是候直接在它上面画

protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
foreach (LineObj line in this.lineList)
{
line.Draw(e.Graphics, SystemPens.ControlText);
}
}