Я разрабатываю приложение, подобное САПР, на C # (формы, без внешней среды).Я реализовал панорамирование, масштабирование, выбор;но он очень медленный, потому что при каждом перемещении мыши он перерисовывает все строки.
Как сделать приложение более быстрым и эффективным?Как перерисовать только одну линию?
код для рисования (на стандартной панели):
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();
}
}