Visual Studio C# pictureBox - рисование в конструкторе From не отображается - PullRequest
0 голосов
/ 21 апреля 2020

У меня проблема в том, что я хочу нарисовать изображение на картинке с загруженным изображением до того, как его увидит пользователь. Рисунок в принципе работает, но если я сделаю это в конструкторе, он не появится. Это работает, если я вызываю ту же функцию с помощью кнопки.

    public Form1()
    {
        InitializeComponent();
        draw();

    }

    public void draw()
    {
        pictureBox1.Refresh();
        Graphics g = pictureBox1.CreateGraphics();
        Rectangle rect = new Rectangle(new Point(20, 20), new Size(40, 40));
        rect.Offset(8, 8);
        g.DrawEllipse(new Pen(Brushes.Black, 2), rect);
        g.Dispose();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        draw();
    }

Я бы предположил, что круг будет отображаться при загрузке формы, но это происходит только при нажатии кнопки. Сам код выполняется, как было проверено с окном сообщений.

1 Ответ

0 голосов
/ 21 апреля 2020

Элемент управления отображает себя в своем событии Paint, поэтому, как только он отображается на экране (ie, после вашего кода), он окрашивается в серый цвет как обычно.

Если вы хотите покрасить элемент управления, любой элемент управления, вы либо переопределяете его функцию OnPaint, либо подписываетесь на его открытое событие Paint.

Подсказка должна заключаться в том, что вам пришлось создать собственный объект Graphics, в отличие от использования объекта, созданного во время обычных операций рисования, что также включает в себя надлежащую обработку отсечения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...