由于XAML被编译,因此执行代码应该没有区别.
Winforms(代码如下):
Form formPeter = new Form(); Textbox textbox = new Textbox(); Label l1 = new Label1();
Xaml在运行时没有被解析,因为我认为... :-)
但是如何使用大量控件渲染/执行大型表单呢?哪种技术更快?
哪种技术更快?我担心你的问题没有一个简单的答案.
您在运行时未解析XAML的评论既是真的也是假的.虽然XAML不会被解析它的标准化二进制版本(如内嵌在应用程序中的资源)呼吁BAML 是在运行时解析.要说DirectX比GDI更快也是一种简化 - 基于WPF和GDI的渲染技术只具有不同的性能特征.例如,WPF使用保留的渲染模式,而WinForms和其他基于GDI的技术则不使用.WPF对象的重量往往更重,因为它们比winforms对象支持更多的属性.我们有几十年的知识,如何使GDI变得非常快,而且只有相对较短的时间使用WPF和XAML.
WPF对于编写应用程序来说足够快,但是你需要时刻保持警惕,你的元素数量不会爆炸(例如,通过创建过于复杂的模板,然后在UI中重复数百或数千次).此外,WPF在不同的图形硬件上执行不同的操作(因为它在内部调用DirectX).在WPF中2D内容应该没问题,即使它完全用软件渲染(比如它在虚拟机上的渲染方式),但是带有大量元素的动画,抗锯齿3D需要真正的GPU能力.随着时间的推移,图形硬件变得越来越强大和流行,并且关于如何改进性能调整WPF的知识得到改进,我们应该看到WPF进一步提前(假设它现在稍微如此......对于某些场景......有时候).所以我猜答案是"它取决于".
WPF使用DirectX进行渲染(速度更快)而不是本机Windows GDI.
您可能已经知道,Native GDI是基于位图的.由于WPF是基于矢量的,因此与GDI相比,WPF可以更好地利用硬件支持.
然而,选择WPF或Winforms的决定在很大程度上取决于其他因素 - UI中需要的灵活性,应用程序需要多少媒体支持等等.WPF不是Winforms的替代品 - 它不是银所有问题的子弹.
随着更多硬件加速功能的出现,WPF可以提供比Winform应用程序更好的功能.
我读过几本有趣的博客.
约翰的帖子
罗伯的帖子