因此,如果我有一个WPF窗口,那么在WPF窗口上移动另一个窗口会导致WPF窗口像Windows窗体一样进行数千次重绘吗?
我想知道在这种情况下使用向量的效果,而不是像Window Forms一样基于位图的所有内容。
答案 0 :(得分:6)
您可以查看WPF architecture以了解它是如何设置的。
回答您的具体问题:WPF使用保留模式绘图系统。特别是,这意味着任何必要的重绘(可能是必要的)都是在幕后处理的,无需您的干预。
相比之下,GDI使用立即模式;即你基本上直接写像素,如果 - 由于任何原因 - 这些像素需要刷新,你需要重新渲染。
WPF不会必然实际缓存所有内容 - 这取决于操作系统和内存可用性等。但是,如果它确实需要重新渲染,它将使用您上次提供的场景图来执行此操作;它对程序员来说是透明的。此外,即使它“使用”DirectX,这基本上只是意味着它正在尽最大努力使用硬件支持并在该功能上实现。并非所有图形卡或所有WPF功能都完全加速。 This question关注的是区分不同的撕裂模式以及所带来的后果。
答案 1 :(得分:1)
WPF的渲染处理方式与Windows窗体完全不同。它使用DirectX来渲染自身,因此渲染往往比Windows Forms具有更少的问题。
(但是,这会引起一些自身的问题 - 特别是,它对显卡的要求越来越高......)