当我在WPF中在画布上添加许多孩子时,有没有办法节省内存?

时间:2014-09-06 10:32:50

标签: c# wpf canvas

void MainWindow_MouseMove(object sender, MouseEventArgs e)
{
   Ellipse el = new Ellipse();

   el.Fill = ellipse.Fill;
   el.Width = ellipse.Width;
   el.Height = ellipse.Height;

   Point p = e.GetPosition(this.canvasPrint);
   Canvas.SetLeft(el, p.X);
   Canvas.SetTop(el, p.Y);
   canvasPrint.Children.Add(el);
}

这是我制作的程序的示例代码。我在画布上添加省略号。每个椭圆的点是鼠标光标的点。当鼠标移动时,会生成并添加一个新椭圆,使其像MS Paint中的画笔工具一样工作。

然而,它消耗了太多内存。所以过了一会儿,程序变慢了。有什么方法可以解决这个问题吗?当我在画布上添加相同的椭圆对象时,我不能重复使用它吗?

1 个答案:

答案 0 :(得分:3)

您应该使用DrawingVisualDrawingContext来绘制画笔路径。 DrawingContext类似于Windows窗体Graphics对象。因此,在您的情况下,只需在同一DrawingContext上绘制画笔路径即可。