欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-06-08 17:22:05
...

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

一个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的渲染机制引起的。先记录一下。

相关标签: WPF VIDEO GRAPHIC