C# で CAD のようなアプリケーションを開発しています (フォーム、外部フレームワークなし)。パン、ズーム、選択を実装しました。しかし、マウスを動かすたびにすべての行を再描画するため、非常に遅くなります。
アプリをより速く、より効率的に構築する方法は? 1行だけを再描画する方法は?
描画用コード (標準パネル):
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();
}
}