【问题标题】:how to test the speed of visual tree rendering in silverlight?如何测试silverlight中视觉树渲染的速度?
【发布时间】:2011-06-17 04:26:48
【问题描述】:

例如,我创建了一个包含大量形状的 Canvas,如下所示:

var canvas = CreateCanvasThatContainsShapes();

然后我将所有画布添加到主页:

layoutRoot.Content = canvas;

这两行代码运行所需的时间并不多,但所有形状都需要一段时间才能显示在屏幕上,并且 UI 会在一段时间内无响应。

在 WPF 中,我可以通过执行以下操作来测试可视化树的渲染时间:

//create logic tree and add it to main page
stopWatch.Start();
Dispatcher.BeginInvoke(new Action(()=>{
stopWatch.Stop();
//Show the ellipsed time
}),DispatcherPriority.Loaded);

这样,Stopwatch 在逻辑树创建后启动,在可视化树渲染(加载)后停止。

但是在silverlight中,没有DispatcherPriority,那我该怎么做类似的事情呢?

谢谢

【问题讨论】:

    标签: wpf silverlight performance dispatcher visual-tree


    【解决方案1】:

    您可以使用一个事件来帮助确定渲染到屏幕所需的时间; LayoutUpdated。每当布局解析完成时都会触发此事件。在设置 layoutRoot.Content 之前启动计时器,并在事件触发时停止它。这告诉您渲染过程花费了多长时间。

    另一个需要注意的有用事件是CompositionTarget.Rendering,每次呈现 UI 时都会触发此事件。您应该会发现此事件经常触发,但是当您添加复杂的可视化树时,您会在事件流中看到一个间隙。

    【讨论】:

    • 很遗憾,LayoutUpdated 事件没有成功,还不知道为什么。
    猜你喜欢
    • 1970-01-01
    • 2014-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    • 2015-06-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多