Ганс должен был опубликовать свой комментарий в качестве ответа, но он прав в обоих случаях.DrawLine()
имеет перегрузку, которая принимает PointF
, так что это не проблема.
Ваша следующая проблема будет выяснить, почему ваш график, кажется, исчезает случайно.Вы должны выполнить все вашего рисунка в событии Paint элемента управления или, если в производном классе, переопределив OnPaint()
, всегда рисовать в предоставленном объекте Graphics (e.Graphics
).
Будут времена, когда ваш контроль перерисовывает себя, возможно, потому что он был минимизирован, его размеры были изменены, что угодно.Ваш код рисует только при нажатии кнопки, а это означает, что принудительная перерисовка системы уничтожит ваш график.
Далее, ваш код имеет потенциальную «утечку» памяти.Что произойдет, если что-нибудь между созданием объектов пера / Графика и вызовом Dispose () для них?В этом конкретном случае ваша программа, скорее всего, просто потерпит крах, но в целом и, что более важно, ваши вызовы Dispose()
не будут выполняться, и вы временно «вытекли» некоторые нативные ресурсы.
Вы должны обернуть созданиетипов, которые реализуют IDisposable
в using
операторах, то есть
using( var myPen = new System.Drawing.Pen(Color.Red) )
using( var handler = this.CreateGraphics() )
{
// use 'myPen' and 'handler' here
}
Эта конструкция на самом деле является блоком try / finally, поэтому даже если что-то внутри фигурных скобок выдает исключение, Dispose()
будет по-прежнему вызываться.