PaintEventArgs - это класс в пространстве имен System.Windows.Forms .Если вы работаете с формами, это означает, что у вас есть доступ к пространству имен и классу, однако у вас может не быть доступа к коду формы, который вы пытаетесь нарисовать ...
Даже еслиу вас нет доступа к исходному коду формы, событие Paint является открытым, и вы можете зарегистрировать обработчик для него из кода вне формы.(Я предполагаю, что это ваша проблема.)
См. Этот простой пример класса, который имеет ссылку на форму, регистрируется с помощью обработчика рисования, а затем выполняет произвольное рисование.
using System;
using System.Drawing;
using System.Windows.Forms;
namespace WindowsFormsApplication1 {
class Painter {
public Painter(Form form) {
form.Paint += new PaintEventHandler(form_Paint);
}
void form_Paint(object sender, PaintEventArgs e) {
e.Graphics.DrawLine(Pens.Black, 0, 0, 20, 20);
}
}
}
Важная концепция в этом фрагменте заключается в том, что если у вас есть ссылка на форму (или любой объект, производный от элемента управления), вы можете зарегистрироваться в событии рисования, которое вызывается автоматически всякий раз, когда необходимо перекрасить элемент управления (и вы можете нарисовать что угоднохочу для этого элемента управления.)
В фрагменте я передал Form в конструкторе и зарегистрировался там с событием рисования, но это только для быстрого примера.Структура вашего кода будет другой, но ... у вас будет форма, и будет этап инициализации, на котором вы зарегистрируетесь на событие, а затем создадите метод для рисования.
Вы можете нарисовать другие способы,создание и удаление вашего собственного объекта Graphics, но это не самый предпочтительный метод.С одной стороны, вы не получите уведомление, когда вам нужно перерисовать окно, и вам потребуется создать другие механизмы для перерисовки, такие как таймер (как очень простой и уродливый пример), и вам придется управлять объектом Graphics самостоятельно.