免费分辨率

时间:2010-04-29 05:30:50

标签: c# wpf resolution

解决方案免费应用程序的含义是什么,正如我与我的许多朋友讨论的那样,他们说解决方案免费意味着解析用户希望看到应用程序应该调整它的位置,解决方案是监视器解析或任何说100比100分辨率是什么?

5 个答案:

答案 0 :(得分:3)

理想情况下,应用程序会使用更高的像素密度来显示更多细节。例如,高分辨率显示器可以显示类似大小的工具栏图标,但使用额外的像素来渲染更清晰的图形。这样,您可以保持相同的基本布局,但提供更高的清晰度和细节。由于各种原因,这种解决方案在过去是不可能的。虽然您可以调整使用GDI / GDI +绘制的图形内容,但User32(生成常用控件的视觉效果)不支持真正的缩放。

WPF不会遇到这个问题,因为它会渲染所有用户界面元素,从简单的形状到常用的控件,如按钮。因此,如果您在计算机显示器上创建一个1英寸宽的按钮,它在高分辨率显示器上可以保持1英寸宽 - WPF只会更详细地渲染它并具有更多像素。

WPF的缩放基于系统DPI设置,而不是物理显示设备的DPI。它在计算尺寸时使用系统DPI设置。

WPF单位

WPF窗口及其中的所有元素都是使用与设备无关的单元进行测量的。单个与设备无关的单元定义为1/96英寸。要理解这在实践中意味着什么,你需要考虑一个例子。

想象一下,你在WPF中创建了一个96×96单位的小按钮。如果您使用的是标准Windows DPI设置(96 dpi),则每个与设备无关的单元对应一个真实的物理像素。那是因为WPF使用了这个计算:

[Physical Unit Size] = [Device-Independent Unit Size] × [System DPI]

                 = 1/96 inch × 96 dpi

                 = 1 pixel

基本上,WPF假设它需要96个像素来制作一英寸,因为Windows通过系统DPI设置告诉它。但是,现实取决于您的显示设备。

例如,考虑使用最大分辨率为1600 x 1200像素的20英寸LCD显示器。使用一些毕达哥拉斯,您可以计算此监视器的像素密度,如下所示:

[Screen DPI] = ((Sqroot of)(1600*1600)+(1200*1200))pixels/19 inches = 100dpi

在这种情况下,像素密度达到100 dpi,略高于Windows假设。因此,在此显示器上,96 x 96像素的按钮将略小于1英寸。

另一方面,考虑使用分辨率为1024 x 768的15英寸LCD显示器。此处,像素密度降至约85 dpi,因此96 x 96像素按钮显得略大于1英寸。

在这两种情况下,如果缩小屏幕尺寸(例如,通过切换到800 x 600分辨率),按钮(以及每个其他屏幕元素)将按比例放大。那是因为系统DPI设置保持在96 dpi。换句话说,Windows继续假设它需要96个像素来制作一英寸,即使分辨率较低,它的像素也会少得多。

参考: C#2008中的Pro WPF:Windows Presentation Foundation with .NET 3.5,Second Edition

答案 1 :(得分:2)

WPF使用与设备无关的坐标,这意味着应用程序可以在不同的DPI设置下正确且均匀地扩展。

WPF的另一个非常有用的功能是ViewBox,它可用于创建可伸缩的应用程序。请尝试以下方法。

<Window x:Class="WpfApplication2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Width="300" Height="300">
    <Viewbox Stretch="Uniform">
        <Grid Width="300" Height="300">
            <Button Content="Button" Margin="16,8,0,0" 
                    Width="104" Height="32" 
                    HorizontalAlignment="Left" 
                    VerticalAlignment="Top" />
            <CheckBox Content="CheckBox" Margin="136,8,0,0" 
                      Width="112" Height="24" 
                      HorizontalAlignment="Left" VerticalAlignment="Top" />
        </Grid>
    </Viewbox>
</Window>

这个简单的例子是窗口标题栏和边框的一小部分原因,但你明白了。调整此窗口的大小时,内容会均匀缩放,因此在任何分辨率下它都看起来都相同。

答案 2 :(得分:1)

您可以将WPF用于您的应用程序。您在表单上创建的每个控件都将采用不同的屏幕分辨率。

WPF的主要优点之一是“解决方案独立性”。这种好处通常用相对模糊的术语来描述,导致人们相信这意味着相同的WPF窗口将以相同的大小显示在任何监视器上,而不管该监视器的分辨率如何。

答案 3 :(得分:0)

我认为这意味着不同分辨率下的比例应该相同。这并不意味着应用程序将在内部调整其窗口大小以适应新的分辨率。但这并不普遍。

另一个非常重要的事情是,这是带来的背景。例如,对 Web应用程序有不同的期望,这可能会根据分辨率更改布局或页面大小。 视频游戏,可能会根据屏幕分辨率和方面呈现内容very differently。我经常提到的常规 Windows应用程序(GUI)。

答案 4 :(得分:0)