Я изучал, как использовать GDI, но мне трудно понять, как Invalidate () и переопределяет событие onPaint, и кажется, что он вращается кругами.
У меня есть следующий код
private void DrawLine()
{
System.Drawing.Pen myPen = new System.Drawing.Pen(System.Drawing.Color.Red);
System.Drawing.Graphics formGraphics;
formGraphics = this.CreateGraphics();
formGraphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
formGraphics.DrawLine(myPen, mouseDown.X, mouseDown.Y, mouseUp.X, mouseUp.Y);
myPen.Dispose();
formGraphics.Dispose();
}
protected override void OnPaint(PaintEventArgs e)
{
DrawLine();
}
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
mouseDown = e.Location;
}
private void Form1_MouseUp(object sender, MouseEventArgs e)
{
mouseUp = e.Location;
}
Тем не менее, единственный способ получить линию, которую я только что нарисовал, - это вызвать Invalidate () вручную, и когда я это сделаю, она очистит все предыдущие строки. Может кто-нибудь сказать мне, где я не так с этим, пожалуйста?