【问题标题】:improving performance in very big wpf grid在非常大的 wpf 网格中提高性能
【发布时间】:2016-11-08 17:02:32
【问题描述】:

假设我有一个网格,其大小为:[650, 540] 每个单元格中都有一个 UIElement,如矩形或椭圆形

网格在开始时填充,在程序的整个生命周期中从未修改过

as you can see it's placed inside a scrollviewer

问题在于,由于速度慢,程序绝对不能使用

我应该考虑从 WPF 更改为另一个库还是有办法让它更快?你能推荐点什么吗?

提前谢谢你

【问题讨论】:

  • 这样一个网格的目的是什么?为什么不使用位图呢?
  • @Clemens 通过按下控件,用户可以向前或向后突出显示具有相同“形状”的附近单元格。您是否建议使用 Canvas 而不是 Grid?我认为 Grid 更适合在 wpf 中使用,因为它与我将要代表的结构的亲和性 我还认为是一种“可扩展性”(网格并不总是 [650, 540],它是只是最大尺寸)由于 wpf 网格的矢量图形属性
  • @Clemens,哦.. 或者你的意思是使用位图而不是 UIelements?
  • 不,我的意思是使用单个位图而不是整个网格。您说它“从未修改过”。显然,当您想突出显示单元格时,情况并非如此。
  • 然后您应该创建一个包含所有形状的位图,并将其用作空网格的背景(在 ImageBrush 中)。然后将黄色矩形添加到它们需要位于的任何网格单元格中。

标签: c# wpf performance grid rendering


【解决方案1】:

使用位图而不是形状。每当您滚动时,WPF 都会绘制所有形状。

【讨论】:

  • 谢谢,但这是唯一的方法吗?必须是一种使 wpf 仅呈现可见形状的方法
  • 可以肯定的是,单个 Shape 的成本低于位图。您必须在此处渲染 650x540 位图。我想这根本行不通。
  • @Clemens 你预渲染位图
猜你喜欢
  • 2011-03-31
  • 1970-01-01
  • 2012-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-10
  • 1970-01-01
相关资源
最近更新 更多