首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DrawingVisuals主机和布局性能

DrawingVisuals主机和布局性能
EN

Stack Overflow用户
提问于 2011-02-03 01:24:58
回答 1查看 185关注 0票数 0

我有一个WPF (.NET 3.5)控件,可以渲染大约20000个矩形。此MyControl是从Canvas派生的。我在孩提时代将一个MyVisualsHost放入MyControl,如下所示:

代码语言:javascript
复制
public class MyControl : Canvas
{
    private readonly MyVisualsHost host = new MyVisualsHost();
    private List<MyVisual> items = Enumerable.Range(0, 20000).Select(...).ToList();
    public MyControl()
    {
       this.Children.Add(host);
    }
}

所以,我把它放到网格或Window.Content中,它渲染项目的速度相当快(1秒)。当我调整窗口大小时,矩形被重新排列和重新绘制(也是在1秒内)。

但是当我把ComboBox和MyControl放到XAML中时:

代码语言:javascript
复制
<Grid>
   <ComboBox/>
   <MyControl />
</Grid>

在重排时渲染会减慢到5-10秒。

有人知道这一点吗?提前谢谢。

附注:您可以下载演示项目Here

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-05 05:17:16

好吧。我已经做到了。每个视图都在打开/关闭它自己的DrawingContext,这花费了太多的时间。当我更改可视化渲染的代码以使用作为参数传递给OnRender方法的VisualHost的DrawingContext实例时,再次渲染20000个viuals花费了1-2秒的时间。所以现在一切都很好,尽管我因为使用这样的渲染算法而失去了命中测试的能力。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4877645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档