Как сделать так, чтобы картинка оставалась на Picturebox? - PullRequest
0 голосов
/ 21 апреля 2011

Я рисую график на картинке в приложении Windows Mobile Smart Device. График работает хорошо, но сразу же исчезает.

Я использовал строку:

this.Invoke(new EventHandler(picture2_show));

и мой метод рисования:

private void picture2_show(object sender, EventArgs e)
{
    using (Graphics objGraphics = this.pictureBox2.CreateGraphics())
    {
        Pen redpen = new Pen(Color.Red, 1);
        int picBoxWidth = pictureBox2.Size.Width;
        int picBoxHeight = pictureBox2.Size.Height;
        int halfWidth = pictureBox2.Size.Width / 2;
        int halfHeight = pictureBox2.Size.Height / 2;

        Graphics objGraphic = this.pictureBox2.CreateGraphics();

        objGraphic.DrawLine(redpen, 0, 0, 0, picBoxHeight);
        objGraphic.DrawLine(redpen, 0, picBoxHeight - 1, picBoxWidth, picBoxHeight - 1);
        //Rectangle first = new Rectangle(0, halfHeight, picBoxWidth, halfHeight);

        Pen bpen = new Pen(Color.LawnGreen, 3);
        for (int i = 0; i < array.Length - 1; i++)
        {
            objGraphic.DrawLine(
                bpen, 
                pictureBox2.Size.Width * i / array.Length,
                pictureBox2.Size.Height - array[i],
                pictureBox2.Size.Width * (i + 1) / array.Length,
                pictureBox2.Size.Height - array[i + 1]);
        }
    }
}

Picturebox остается, но как сделать так, чтобы график не исчезал?

Помощь очень ценится!

1 Ответ

1 голос
/ 21 апреля 2011

Вам нужно нарисовать свой график в событии Paint в окне рисунка, используя e.Graphics.
Чтобы заставить его перерисовать, позвоните pictureBox2.Invalidate().

Не рисовать на CreateGraphics()поскольку он будет удален при следующем окрашивании элемента управления.

...