如何在WPF中不断更新Canvas上的形状?

时间:2011-04-07 21:13:35

标签: c# .net wpf xaml graphics

我的WPF应用程序中有一个Canvas控件,我在不同的线程中创建了很多形状并将它们添加到画布中(使用Dispatcher),但是因为我正在重新创建子项(它们是动态的,并且是从其他数据生成的,并且它们的数量在运行时会发生变化),我称之为:

canvas.Children.Clear();

但是这样做会使画布“闪烁”,因此在画布被清理和填充时会产生闪烁的外观。是否可以使其显示为“连续”,以便看不到干净的画布步骤?

我不确定是否需要使用上述电话或做其他事情来避免它。

2 个答案:

答案 0 :(得分:2)

Canvas允许您管理其子项的位置,但它仍然负责绘制操作。如果你清除它的孩子,你实际上是要求它只用它的背景重绘自己。

您可以修改Canvas的子项,因此如果您确定它应该仍然存在,我建议您修改子项的属性(而不是删除它并重新添加它)。否则删除它并创建新的并添加它们。

答案 1 :(得分:0)

不是一次性清除所有Canvas孩子,为什么不逐个删除它们并逐个重新创建它们,例如你可以为每个形状添加一个计时器,然后定时器从每个滴答后删除该形状Canvas的孩子,这种闪烁效果会消失。