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