我的表单中有一个名为Pan_Paint
的面板,我的代码如下:
Graphics graph = Pan_Paint.CreateGraphics();
graph.FillEllipse(new SolidBrush(Blue), 10, 10, 100, 100);
当我缩小表格时,以及当我恢复它时,线条将消失。或者当我按Tab键时,同样的事情会发生。我该怎么做才能解决这个问题?谢谢。
答案 0 :(得分:0)
这是基本的。
您需要在某些数据结构中缓存所有绘图,并在Paint
事件中绘制它们。一次又一次,只要windows需要恢复屏幕。
每当您向绘图队列添加一些绘图操作时,最初通过执行Panel.Invalidate()
来调用Paint事件。
除此之外别无选择:
将绘制到 PictureBox 的图像(不仅仅是在PictureBox上!)..
以下是使用PictureBox正确执行的代码,以及如何做错:
// this will change the Image of a PictureBox, assuming it has one.
// These changes are persistent:
using (Graphics G = Graphics.FromImage(pictureBox1.Image))
{
G.DrawEllipse(Pens.Red, new Rectangle(0, 0, 444, 444));
pictureBox1.Invalidate();
}
// This is the wrong, non-persistent way to paint, no matter which control:
//The changes go away whenever the Window is invalidated:
using (Graphics G = pictureBox2.CreateGraphics() )
{
G.DrawEllipse(Pens.Green, new Rectangle(0, 0, 444, 444));
}
而是在Paint事件中创建一类绘制操作并循环遍历它们的列表!