//最初的代码,最小化,form上的图片没有了。
private void button1_Click(object sender, EventArgs e)
{InitializePlane(panel1);
Graphics gfx = panel1.CreateGraphics();
Image img = new Bitmap(@"F:"E_Map"TestProj"Images"yahoo.gif");
Image img2 = new Bitmap(@"F:"E_Map"TestProj"Images"qq.gif");
gfx.DrawImage(img, 0, 0);
gfx.DrawImage(img2, 50, 50);
gfx.Dispose();
}
分析原因:在一个线程中要保持不停的刷屏才会不断的现实,最小化后图片不会再显示,因为只画了一次,当你最小化再打开的时候需要重画才能显示。
解决方案:应该在paint事件中绘制,这样最小化后再还原时,会重新绘制。
//修改中的代码
public Form1()
{
InitializeComponent();
panel1.Paint += new PaintEventHandler(displayer_Paint);
//panel1.Invalidate(); //去掉注释就可以了
}
private void button1_Click(object sender, EventArgs e)
{
InitializePlane(panel1);
}
private void InitializePlane(Control displayer)
{
}
void displayer_Paint(object sender, PaintEventArgs e)
{
Image img = new Bitmap(@"F:"E_Map"TestProj"Images"yahoo.gif");
Image img2 = new Bitmap(@"F:"E_Map"TestProj"Images"qq.gif");
e.Graphics.DrawImage(img, 0, 0);
e.Graphics.DrawImage(img2, 50, 50);
}
现在的问题是:除了第一次不画图,其它都会画图,最小化都不会消失。
解决问题方法:采用 panel1.Invalidate()方法,该方法作用:使整个图面失效且马上重新绘制图片。所以,当第一次click出现的图片应该是第二次绘制的。