我想在PictureBox中显示图形文件:
private void btnLoad_Click(object sender, EventArgs e)
{
if (dgOpenFile.ShowDialog() == DialogResult.OK)
{
Bitmap img = new Bitmap(dgOpenFile.FileName);
picture.Width = img.Height;
picture.Height = img.Height;
g.DrawImage(img, 0f, 0f);
}
}
那是g
private void Form1_Load(object sender, EventArgs e)
{
g = picture.CreateGraphics();
}
但是当我将窗体移到窗外时,我的图片就消失了。我该如何防止这种情况?
答案 0 :(得分:3)
您应该在控件的OnPaint
事件中执行任何自定义绘制,以使其持久化。这会导致每次绘制控件时都会重绘绘图。
但是,在这种情况下,使用图片框会更容易:
picture.Image = img;
答案 1 :(得分:2)
Windows使用Paint-on-Request原则。
因此,当它向您的Control发送WM_PAINT消息时,它的OnPaint()被调用。您应该准备好在重写的OnPaint()或Paint事件处理程序中(再次)绘制图像。
但是Picturebox会为你做这一切。