如何绘制控件,以便绘图不会消失?

时间:2011-01-04 11:55:05

标签: c# winforms image controls picturebox

我想在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();
}

但是当我将窗体移到窗外时,我的图片就消失了。我该如何防止这种情况?

2 个答案:

答案 0 :(得分:3)

您应该在控件的OnPaint事件中执行任何自定义绘制,以使其持久化。这会导致每次绘制控件时都会重绘绘图。

但是,在这种情况下,使用图片框会更容易:

picture.Image = img;

答案 1 :(得分:2)

Windows使用Paint-on-Request原则。

因此,当它向您的Control发送WM_PAINT消息时,它的OnPaint()被调用。您应该准备好在重写的OnPaint()或Paint事件处理程序中(再次)绘制图像。

但是Picturebox会为你做这一切。