рисование графики для формирования в c# - PullRequest
0 голосов
/ 16 июня 2020

Я хочу вызвать функцию из внешнего скрипта, который dr aws фигура.

форма в настоящее время открывается пустой, без фигуры и без ошибок.

ниже пустая форма, которая вызывает функцию из другого файла

public partial class Form1 : Form
{
    other_fff functions1 = new other_fff();
    public Form1()
    {
        InitializeComponent();
        functions1.draw_circle(this);
    }
}

, ниже - это место, где я получаю свою функцию рисования

class other_fff
{
    public void draw_circle(Form1 the_form)
    {
        Pen Pen1 = new Pen(Color.Blue, 9);
        Graphics g = the_form.CreateGraphics();
        g.DrawEllipse(Pen1, 50, 50, 10, 5); // does not work 
    }
}

как я могу сделать это рисование

1 Ответ

0 голосов
/ 16 июня 2020

Вы можете добавить обработчик события к событию рисования следующим образом:

        public static void DrawCircle(Form form)
        {
            form.Paint += OnPaint;
            void OnPaint(object sender, PaintEventArgs e)
            {
                using (var Pen1 = new Pen(Color.Blue, 9))
                {
                    e.Graphics.DrawEllipse(Pen1, 50, 50, 10, 5);
                }
            }
        }

Есть ряд недостатков:

  • Нет возможности удалить круги, если вы добавляете какой-либо метод отмены регистрации события.
  • Будет сложно управлять порядком вызовов рисования, так как он будет зависеть от порядка добавления обработчиков событий.
  • Это немного странно, что внешняя часть рисует форму. Как правило, формы и элементы управления должны управлять своим собственным рисунком, если это необходимо.

Вы можете сообщить форме, что она должна рисовать эллипс, и позволить форме рисовать вместо этого.

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