我正在构建一个显示炮弹轨迹的C#应用程序。但是当我把它最小化的时候,当我把它带回来时,我画到一个画框的轨迹就消失了。有没有一种简单的方法可以阻止它?
答案 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是我的小组,我正在绘制我的所有图形