Рисование изображения в этом методе? - PullRequest
0 голосов
/ 03 мая 2009
    private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
    {
        NumberOfBets++;

        if ((e.X >= 40 && e.X <= 125) && (e.Y >= 0 && e.Y <= 26))
        {
            bettingStatus[0]++;
            for (int x; x < 10; x++)
            {
                Graphics graphic = (???)
            }
        }

Я пытаюсь нарисовать изображение в этом методе MouseDown. Я понятия не имею, что входит в "(???)" часть.

Ответы [ 2 ]

1 голос
/ 03 мая 2009
// Create a Graphics object for the pictureBox1 control.
Graphics g = pictureBox1.CreateGraphics();

Подробнее: MSDN: Графический класс

Вы должны рисовать в событии Paint, потому что если вы этого не сделаете, вы потеряете свои рисунки, если элемент управления перекрашен. PaintEventArgs, передаваемые в обработчик событий Paint, имеет свойство с именем Graphics (типа System.Drawing.Graphics), которое можно рисовать.

0 голосов
/ 03 мая 2009

Вам нужно получить Graphics откуда-то, вероятно pictureBox1 в вашем случае:

Graphics graphic = pictureBox1.CreateGraphics();

... Но вы уверены, что хотите рисовать в MouseDown обработчике событий? Он не будет перекрашен, если какая-либо часть будет перерисована. Возможно, вам было бы лучше сделать все свои рисунки в обработчике событий Paint и вместо этого установить флаг в MouseDown. Затем лишите законной силы область, которую вы хотите перерисовать, чтобы нарисовать новое изображение.

Или, если ваши изображения будут более статичными, вы можете создать Bitmap, нарисовать его, а затем установить Image вашего PictureBox так, чтобы он указывал на Bitmap. Например:

Bitmap bmp = new Bitmap(200, 100);
Graphics graphics = Graphics.FromImage(bmp);
//do drawing here
pictureBox1.Image = bmp;
...