3

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

4

4 回答 4

2

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

编辑:

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

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

于 2012-06-05T13:42:16.153 回答
0

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

于 2012-06-05T13:50:24.683 回答
0

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

将图形内容保存到文件

正如其他人已经说过的那样,问题是当您绘制到图形对象上时,没有任何保留。它被称为持久图形。有时你想要这种行为,但往往不是。

您应该在位图上进行绘图,然后将位图复制到您的图片框。图像。其他答案中所述的另一个选项是在 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;
}
于 2012-06-05T15:57:55.317 回答
0

我遇到了同样的问题,只是在事件更改后使用了 mainp.refresh()

mainp 是我在其中绘制所有图形的面板

于 2015-04-04T13:41:04.437 回答