В Windows Forms вы можете просто рисовать на любом элементе управления, вызывая его метод CreateGraphics
. Если у вас есть панель, например, вы можете рисовать так:
using (var g = panel1.CreateGraphics()) {
g.DrawString("Hello World", 0, 0);
}
Элементы управления также имеют событие Paint
. Добавьте обработчик события, дважды щелкнув событие в окне свойств, и вы можете нарисовать так:
private void panel1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
e.Graphics.DrawString("Hello World", 0, 0);
}
Если вы хотите получить из элемента управления, вы можете просто сделать это в коде, или создать новый пользовательский элемент управления и изменить базовый класс в коде и в файле .Designer.cs (хотя UserControl
или просто Control
будет хорошо). Если у вас уже есть форма в конструкторе, она уже получена из Form
, и вы можете просто переопределить OnPaint.
Мой совет: вам обычно не нужно создавать новый класс, если вы просто хотите что-то нарисовать. Просто используйте событие Paint. Если вам нужно немедленно перерисовать, вызовите Refresh, чтобы сделать перерисовку элемента управления самой. Это должно помочь вам. Обратите внимание, что есть также защищенное свойство DoubleBuffered, которое может помочь вам избежать мерцания (установите его для формы или в производном элементе управления).
Я не уверен, что вы будете делать в WPF. Мне никогда не нужно было рисовать что-то вручную в WPF, так как механизм компоновки и рендеринга очень мощный, и вы можете просто сойти с рук с шаблонами данных, шаблонами элементов управления и т. Д. Суть в WPF в том, что вы обычно ничего не рисуете, двигатель тянет за вас.