今天遇到一个挺特别的问题,先记录下来。
一个Viewbox中包含一个Canvas,然后在这个Canvas上面显示视频图像帧。在此基础之上,需要在视频上overlay一些控件。其中有一些是用来测量尺寸的横线和竖线。
<Viewbox>
<Canvas>
<Image>...</Image>
<StackPanel>
<Line StrokeThickness="1" StrokeDashArray="2,2"><Line>
</StackPanel
</Canvas>
</Viewbox
显示每一帧图片的时候,发现CPU占用率比较高,720×480的图片,30fps就占到了10%以上。当把Line控件去掉的时候,CPU占用率明显下来了,到了6%左右。
后来发现了这个StrokeDashArray属性,我用它来设置虚线的。如果去掉这个属性,CPU占用率就降到6%左右。
初步判断,我猜这个现象是由于WPF里面Canvas的渲染机制引起的。先记录一下。
版权声明:本文为captainst原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。