WPF性能之AllowsTransparency
AllowsTransparency导致白板书写延时书写较明显
1 AllowsTransparency 存在以帮助创建非矩形窗口,因此,当 AllowsTransparency 设置为时, true 窗口的 WindowStyle 属性必须设置为 None 。
2 使用AllowsTransparency = true ,可避免程序启动程序出现白屏或黑屏。但使用之后性能不好。故采用 WindowChrome.WindowChrome 代替。
<WindowChrome.WindowChrome>
<WindowChrome GlassFrameThickness="-1" CaptionHeight="0" UseAeroCaptionButtons="False" CornerRadius="0" NonClientFrameEdges="None" ResizeBorderThickness="0"/>
</WindowChrome.WindowChrome>
但需要注意的是,使用WindowChrome.WindowChrome ResizeMode 不能设置为CanResize ,或则启动会白屏以及使窗体向外扩,可以使用CanMinimize。
延时原因:
1 窗体设置AllowsTransparency,降低了整体的渲染性能,采用GDI,而不是D3D。应采用WindowChrome。
2 AllowsTransparency设置透明的一个最底层核心逻辑就是调用UpdateLayeredWindow 或UpdateLayeredWindowIndirect方法实现在调用过程中需要从DX将窗口渲染内容拷贝出来放在内存,然后使用GDI进行渲染。在拷贝内存过程中需要重新申请一段内存空间,将会在窗口比较大的时候占用更多的内存,同时拷贝需要使用更多的CPU计算。而通过GDI的再次渲染将会降低整个应用的渲染性能。
浙公网安备 33010602011771号