Silverlight 2和大型画布?

时间:2008-10-25 23:51:39

标签: c# silverlight silverlight-2.0

我正在开发一个应用程序,它使用几个大的画布控件(几千个像素),彼此叠加。画布控件本身是完全不可见的,但每个控件都包含许多控件,主要是图像。

我的问题是,是否有建议的画布最大尺寸,还是仅仅是内存问题?而且,我们最好将Canvas大小设置为(0,0)并利用我们可以愉快地在画布范围之外渲染控件的事实吗?

谢谢,

2 个答案:

答案 0 :(得分:2)

注意:Silverlight画布的最大大小为32767点。这是因为UIElements的大小不像WPF那样存储为浮点数,而是32位数量,其中16位形成大小的整数,16位形成它的浮动部分。因此,请确保您的画布不大于那个并且不会是。

您需要更大的解决方案是自己滚动并自己定位对象。实际上你正在重新创建画布。这称为WPF术语虚拟化。

根据画布大小,内存消耗不会更大,但仅取决于控件的数量和这些控件的累积内存大小。但是,如果您将拥有大量WPF对象,则布局阶段确实需要花费大量时间来处理更多(例如,超过1000个)对象。如果这将成为一个问题,你需要自己再次编写代码并拥有一个相同类型的未使用的WPF对象的缓存(因为WPF对象创建也很慢)。

答案 1 :(得分:1)

根据我对Canvas内部的理解,它不需要额外的记忆来变大。

我想到的第一件事就是拥有一个非零大小的Canvas,它允许人们将物品放在相对于四个角中的任何一个角上,这有助于例如调整容器大小。