Как нарисовать на Control, чтобы рисунок не исчезал? - PullRequest
2 голосов
/ 04 января 2011

Я хочу отобразить графический файл в 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 ]

3 голосов
/ 04 января 2011

Вы должны сделать любой пользовательский рисунок в событии OnPaint элемента управления, чтобы сделать его постоянным. Это приводит к тому, что ваш рисунок перерисовывается каждый раз, когда закрашивается элемент управления.

Тем не менее, в этом случае было бы проще использовать графический блок, как он был спроектирован:

picture.Image = img;
2 голосов
/ 04 января 2011

Windows использует принцип Paint-on-Request.

Поэтому, когда он отправляет сообщение WM_PAINT в ваш элемент управления, вызывается OnPaint (). Вы должны быть готовы нарисовать изображение (снова) в переопределенном OnPaint () или в обработчике события Paint.

Но Picturebox сделает все это за вас.

...