Как нарисовать линию обновления
Моя цель очень проста. Представьте, что вы открываете MSPaint, щелкаете по инструменту линии, удерживаете мышь и перетаскиваете ее. Он привязывает начальные координаты, где вы щелкаете мышью вниз, и постоянно рисует и перерисовывает линию к вашей текущей позиции.
За исключением того, что я пытаюсь сделать это в C #, не работает так, как я надеюсь.
[DllImport("user32.dll")]
static extern IntPtr GetDC(IntPtr hWnd);
[DllImport("User32.dll")]
static extern int ReleaseDC(IntPtr hwnd, IntPtr dc);
protected override void OnPaint(PaintEventArgs e)
{
endingPoint = GetMouseCoords();
DrawLine(startingPoint, endingPoint);
}
private void DrawLine(Point startingCoords, Point endingCoords)
{
IntPtr desktop = GetDC(IntPtr.Zero);
Pen pen = new Pen(Brushes.Red, 3);
using (Graphics g = Graphics.FromHdc(desktop))
{
g.DrawLine(pen, startingCoords.X, startingCoords.Y, endingCoords.X, endingCoords.Y);
g.Dispose();
}
ReleaseDC(IntPtr.Zero, desktop);
}
Используя это таким образом, я получаю линию только один раз. Однако если я переместлю DrawLine () к более статичному событию, например MouseUp, оно будет рисовать его, а затем исчезнет примерно через четверть секунды.
Что было бы лучшим способом для достижения моей цели здесь?
Я бы подумал, что любое событие, используемое для исчезновения линии, - это то, к чему я бы хотел прикрепить рисунок линии.