当我最小化我的应用程序时,我的所有绘图都消失了

时间:2012-06-05 13:36:00

标签: c# .net winforms graphics

我正在构建一个显示炮弹轨迹的C#应用​​程序。但是当我把它最小化的时候,当我把它带回来时,我画到一个画框的轨迹就消失了。有没有一种简单的方法可以阻止它?

4 个答案:

答案 0 :(得分:2)

我在鼠标事件中打赌您的绘图。使用onpaint事件,你应该很高兴。

编辑:

这是一个使用onpaint()事件的不错的绘图教程:

http://www.geekpedia.com/tutorial50_Drawing-with-Csharp.html

答案 1 :(得分:0)

当窗口恢复时,需要重绘窗体。如果您没有将绘图作为绘制事件的一部分,则不会重绘它。

答案 2 :(得分:0)

这个问题与这个问题非常相似

Saving a Graphics content to a file

正如其他人已经说明问题是当你绘制图形对象时,没有任何东西保留。它被称为持久图形。有时你会想要这种行为,而不是你不这样做。

您应该将绘图绘制到位图上,然后将位图复制到picturebox.Image。其他答案中说明的另一个选项是在OnPaint方法中执行绘图程序。

请阅读上面的答案。标题是误导性的,他认为他必须保存到文件中才能获得持久性,但我们却向他展示了其他内容。

编辑以下是上述链接中的重要代码

Bitmap buffer; 
public Form1()
{
    InitializeComponent();
    panel1.BorderStyle = BorderStyle.FixedSingle;
    buffer = new Bitmap(panel1.Width,panel1.Height);
    //Make sure you resize your buffer whenever the panel1 resizes.
}

private void button1_Click(object sender, EventArgs e)
{
    using (Graphics g = Graphics.FromImage(buffer))
    {
        g.DrawRectangle(Pens.Red, 100, 100,100,100);
    }
    panel1.BackgroundImage = buffer;
}

答案 3 :(得分:0)

我遇到了同样的问题,只是在事件发生变化后使用了mainp.refresh()

mainp是我的小组,我正在绘制我的所有图形