0

我正在为特殊应用设计和实现 GUI。

我在 C# 上使用 WPF,

我打算将此应用程序应用于不同的显示器分辨率(1366x768 或 1920x1080,...)。

但我没有这方面的经验。我不知道如何实现可以很好地以任何分辨率显示的灵活 GUI。

有人可以给我一些想法吗?

4

2 回答 2

5

1 - 手动编写 XAML,不要使用 Visual Studio 设计器。

  • 设计器生成固定大小的固定位置 UI(ala winforms),如果您需要独立于分辨率,则不会有用。

2 - 也不要自己固定 UI 元素的大小和位置。

  • 不要做诸如<TextBox Width="56" Margin="50,30,10,5"/>. 取而代之的是,将您的 UI 放置在与分辨率无关的布局容器中,例如GridDockPanel。在您的网格中也使用星号。

编辑:添加@Viv 的评论,这非常重要,我决定将其作为答案的一部分:

就像编程中的其他所有事情一样,对第 1 点持保留态度。不要让它成为另一个声明,例如“在 MVVM 中,代码隐藏中的任何代码都是错误的”。使用设计器(VS/Blend)来生成模板、修改故事板、VSM、导入 Illustrator/Photoshop 文件是完全合理的。知道你在处理什么,即使在这种情况下你得到恒定的尺寸,相应地调整 xaml 以摆脱它,而不是完全忽略它的各个方面

于 2013-06-28T15:14:00.493 回答
2

首先,它在某种程度上取决于应用程序的性质,但是您指定的分辨率在总体方案中并没有太大的不同(如果您将 640x480 与 2560x1600 进行比较,那么您可能会有更大的担忧!),很可能,如果你选择了正确的组件,它们会为你组织起来(或者更恰当地说,操作系统会在幕后组织它们)。

您选择 WPF 的事实意味着您在 UI 元素的渲染方式方面具有极大的灵活性,因为 WPF 本身就是基于矢量的渲染引擎,而不是基于 DPI/每像素的 Windows 窗体 (GDI/GDI+)渲染引擎。

但是,让我们深入研究一下,好吗?

例如,假设您在 Windows 窗体中设计 UI,它需要窗体上的 ToolStrip,然后将所有 1000 个按钮添加到 ToolStrip。好吧,在大型显示器上,您可能只会看到全部 1000 个按钮,但在沼泽标准 1080p 显示器上,您可能只能看到其中的 30 个;那么其余的会发生什么?- Windows 会将它们放在 ToolStrip 末尾的子菜单中,以便您仍然可以访问它们,即使它们不在 ToolStrip 的主要(可见)部分。我很确定同样的原则也适用于 WPF,因为您可能会更好地控制事物的呈现方式和外观!

WPF 通过矢量渲染带来的好处是分辨率独立性。这使您可以灵活地决定是否希望您的元素呈现为“固定”大小(在任何分辨率下,它将始终使用相同的像素),或者允许引擎根据分辨率动态调整元素大小(在低分辨率元素将使用更少的像素进行渲染,但质量会降低,或者在高分辨率下,将使用更多的像素进行渲染,并且质量会更高)。

为了帮助您入门,这里有一本来自 SyncFusion 的免费 WPF 电子书(说真的,请查看它们,它们提供了相当多的免费、体面的东西!)

WPF 简明扼要

于 2013-06-28T15:23:01.460 回答