5

我读到 WPF 在后台使用 DirectX 来执行其渲染,它不依赖于 WinForms 用来渲染控件的恐龙库。

所以我用 WPF 制作了我的 Presentation 层,它在 Win8 下看起来应该是这样的。

然后我将该项目部署到 Windows Server 2003... 发现我漂亮的小自定义消息框看起来非常像 WinForms 并且有些笨拙;按钮控件与 WinForms 的控件非常相似,扩展器控件不再显示为带圆圈的^箭头,并且看起来像是在 1998 年绘制的(^想象一下当鼠标悬停在它上面时弹出的丑陋方形扁平按钮上的箭头) .

来自C# 2010圣经中的 Pro WPF :

WPF 的部分承诺是您无需担心特定硬件的细节和特性。WPF 足够智能,可以在可能的情况下使用硬件优化,但它对所有内容都有软件后备。因此,如果您在使用旧版显卡的计算机上运行 WPF 应用程序,界面仍将按照您设计的方式显示

那么,这是谎言吗?对我来说是这样,因为它看起来不像我设计的那样

如果不是,那么无论运行它的机器如何,为什么/如何渲染不一样?软件后备是否以某种方式设计为模仿 Win32/GDI 渲染?有没有办法让我的小自定义消息框在 Win8 和 WinServer2K3 上看起来相同?

4

1 回答 1

4

这与 DirectX / 渲染 / 视频卡 / 任何一个都没有关系。

以及与 WPF 相关的一切都采用 Windows 主题中所有 UI 元素的默认外观。

如果您不希望这种行为,您将必须为所有 UI 元素类型提供StylesTemplates,或者以其他方式找到包含PresentationFramework.Aero.dll在您的应用程序中并将其用作默认主题库的方法。

看看这个答案

于 2013-05-01T19:53:27.227 回答