WPF中,一个由Line控件的StrokeDashArray属性引发的CPU占用率问题

来源:互联网 发布:阿里云储存空间不足 编辑:程序博客网 时间:2024/06/06 15:04

今天遇到一个挺特别的问题,先记录下来。

一个Viewbox中包含一个Canvas,然后在这个Canvas上面显示视频图像帧。在此基础之上,需要在视频上overlay一些控件。其中有一些是用来测量尺寸的横线和竖线。


<Viewbox>    <Canvas>        <Image>...</Image>        <StackPanel>            <Line StrokeThickness="1" StrokeDashArray="2,2"><Line>        </StackPanel    </Canvas></Viewbox

显示每一帧图片的时候,发现CPU占用率比较高,720x480的图片,30fps就占到了10%以上。当把Line控件去掉的时候,CPU占用率明显下来了,到了6%左右。

后来发现了这个StrokeDashArray属性,我用它来设置虚线的。如果去掉这个属性,CPU占用率就降到6%左右。


初步判断,我猜这个现象是由于WPF里面Canvas的渲染机制引起的。先记录一下。

0 0
原创粉丝点击