Como desenhar uma linha de atualização
Meu objetivo é muito simples. Imagine abrir o MSPaint, clicar na ferramenta de linha, mantendo o mouse pressionado e arrastando-o. Ele ancora as coordenadas iniciais onde você clicou o mouse para baixo e constantemente desenha e redesenha uma linha para sua posição atual.
Exceto que tentar fazer isso em C # não está funcionando tão bem quanto eu esperava.
[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);
}
Usando dessa maneira, eu só traço a linha uma vez. No entanto, se eu mover o DrawLine () para um evento mais estático como o MouseUp, ele será desenhado e desaparecerá após cerca de um quarto de segundo.
Qual seria a melhor maneira de realizar meu objetivo aqui?
Eu pensaria que, seja qual for o evento que está sendo usado para fazer a linha desaparecer, é para isso que eu gostaria de anexar o desenho da linha.