我正在用 C# 开发类似 CAD 的应用程序(表单,没有外部框架)。我已经实现了平移、缩放、选择;但它很慢,因为每次鼠标移动都会重绘所有线条。
如何构建更快、更高效的应用程序?如何只重画一条线?
绘图代码(在标准面板上):
void pan_Paint(object sender, PaintEventArgs e)
{
foreach (Entitie o in sketch.Entities)
{
if (o is Line)
{
Line l = (Line)o;
Point p1 = pointScreen(l.P1.X.CurrentValue, l.P1.Y.CurrentValue);
Point p2 = pointScreen(l.P2.X.CurrentValue, l.P2.Y.CurrentValue);
e.Graphics.DrawLine(Pens.Black, p1, p2);
}
}
}
绘制新线:
void pan_MouseMove(object sender, MouseEventArgs e)
{
if (tmpEntitie != null)
{
Line l = (Line)tmpEntitie;
l.P2 = e.Location;
pan.Invalidate();
}
}