【发布时间】:2013-09-27 15:13:06
【问题描述】:
其实我已经开始学习WPF了。我在开发 Windows 窗体应用程序方面有几个月的经验。虽然,我得到了 WPF 应用程序的含义,但我仍然无法根据它们的输出区分两者之间的区别。
参考Link: Device Independent Pixel (DPI),我了解到,每当操作系统呈现 WPF 应用程序时,它都会根据其分辨率自行管理其大小。
所以为了检查这种差异,我在两个框架中创建了两个演示应用程序并更改了分辨率。但我没有发现任何令人满意的差异。这可以解释它是一个 WPF 应用程序,而这个是一个 Windows 窗体应用程序。
它不会在最大化时创建任何滚动条,并且不会在更改分辨率时使按钮变大或变小。
我在某处读到 Visual Studio 2010 已用 WPF 重写。但是在我的实验中,我看到(在更改桌面分辨率时)它使文本和图形不可读/模糊。在重新调整窗口大小时,除了菜单栏外,一切都被隐藏了。并且菜单栏内容正在改变它的位置,例如最右边的一个菜单项正在向下移动。为什么?
请纠正我并解释一下(这个显示问题)。
【问题讨论】:
-
我不知道你在说什么。 WPF 与分辨率无关。 winforms 不是。 WPF 不是“模糊的”,如果您有一个看起来模糊的 WPF 应用程序只是 change the font rendering mode。
-
在更改屏幕分辨率时,我在 Visual Studio(或任何其他应用程序)中没有发现任何问题。不,您绝不能在 WPF 中对窗口(或元素大小)进行硬编码。诸如按钮之类的东西有时需要固定大小,但是您可以将 LayoutTransform 应用到整个 Window 以补偿不同分辨率下的固定大小。
-
您也可以将
ViewBox放入您的应用程序中,当屏幕分辨率改变时,它会缩放内容。这样,无论屏幕分辨率是 800 x 600 还是 1920 x 1080,应用程序看起来总是一样的。 -
WPF 是 Windows UI 框架的绝命毒师 - 广受好评,任何使用它的人都对其赞不绝口,但需要一些时间才能进入。不要忘记它比 WinForms 更快的众多原因之一是它是使用 DirectX 管道进行的所有硬件加速!将其与 XAML 的丰富自定义、MVVM 的模块化、数据绑定的简单性相结合,您最终会厌恶使用 self 的旧 Windows 窗体。