代码之家  ›  专栏  ›  技术社区  ›  George Sealy

Silverlight 2和大型画布?

  •  1
  • George Sealy  · 技术社区  · 16 年前

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

    我的问题是,画布是否有建议的最大大小,或者它纯粹是内存问题?此外,我们是否更好地将画布大小设置为(0,0),并利用这样一个事实,即我们可以愉快地在画布边界之外呈现控件?

    谢谢,

    G

    2 回复  |  直到 16 年前
        1
  •  1
  •   David Schmitt    16 年前

    从我对 Canvas 它不需要额外的内存来增大。

    我想到的第一件事是有一个非零尺寸 帆布 它允许将项目相对地放置在四个角中的任何一个角上,这有助于调整容器的大小。

        2
  •  2
  •   Rutger Nijlunsing    16 年前

    注意:Silverlight画布的最大大小是32767点。这是因为ui元素的大小并不像wpf中那样以浮点形式存储,而是以32位的数量存储,其中16位表示大小的整数,16位表示大小的浮动部分。所以要确保你的画布不大于这个尺寸,也不会大于这个尺寸。

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

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