私はC#(フォーム、外部フレームワークなし)のようなCADアプリケーションを開発しています。パン、ズーム、セレクトを実装しました。マウスを動かす度にすべての行が再描画されるため、非常に遅いです。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();
}
}
C#は使用しないでください。最も基本的なアプリケーションでさえも関係するライブラリがあれば、あなたが描画で行うことのほとんどは潜在的です。また、あなたがまだ[OpenTK](http://www.opentk.com/)のようなものを探していることを提案していないなら、 –
あなたのコードを表示できますか?また、.NETはグラフィックスにも優れているので、マウスを移動するたびに再描画しても、毎回変更領域を再描画するだけで問題はありません。 – Ryan
.NETに慣れていれば、大部分のグラフィックスアプリケーションには高速です。ヒント:SetPixelを何度も呼び出すことは、あなたがやりたいことではありません:-) –