【发布时间】:2015-02-06 11:24:40
【问题描述】:
我目前正在为Ising model(德国维基百科,因为只有右边的图片真正重要)开发一个 GUI,它应该由大约 200x200 的旋转元素组成。我通过以下方式实现了这一点:
<UniformGrid Name="grid" .... />
并为代码中的每个旋转添加一个矩形,如果旋转的值发生变化,我会在该矩形后面进行更新。这不知何故非常慢,我改变了它,所以它使用绑定
<ItemsControl Name="IsingLattice" ItemsSource="{Binding Spins}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Name="grid" ...
...
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Rectangle Fill={Binding Color} ...
但这又是 - 非常慢。我尝试调试和改进了 3 天,但到目前为止没有成功。
现在的问题是:我的方法错了吗?如果是这样,我应该改用什么?如果没有,我该如何提高性能?
如果相关,我会更新这篇文章,提供我的模型实现的一些细节。
编辑:应该可以通过与元素交互来改变单次旋转。这可以通过在实际图形顶部的透明层来完成,但无论如何可能并不难。
【问题讨论】:
-
ps:10x10 旋转的性能很好 - 使用 30x30 元素会变慢。
-
200x200,也就是40000,可以全部显示在屏幕上吧?
-
@oerpli:获取一些分析数据可能会很有趣。看看这个msdn.microsoft.com/en-us/library/aa969767(v=vs.110).aspx 和这个codeproject.com/Articles/784529/…
-
@kennyzx 是的,它是一个 600 像素的正方形 - 所以对于 200x200,每个旋转都是 9 像素宽(假设 WPF 将一个像素映射到一个它不知道的像素)。
-
@bic 如果它告诉我任何有趣的事情,我会运行分析器。
标签: c# .net wpf performance xaml