Possible Duplicate:
C# WPF resolution independancy?




监视器和系统DPI的分辨率与WPF分辨率独立性有何区别?
更改两者之间的内容可以使WPF中的窗口大小保持相同,而这在User32中是不可能的?
编辑:
我正在阅读的《 C Sharp中的Pro WPF》这本书说,如果我们在96 DPI中创建一个1英寸按钮,然后由于像素密度更高而将DPI更改为120,则按钮会变小(在Winforms中)。我尝试了一下,可以看到在两种情况下,按钮的大小都保持不变!

为什么会这样呢?

最佳答案

实际上,WPF所谓的分辨率独立性使您无法做Win32中以前做不到的任何事情。只是之前还有很多工作要做。因此,这里唯一真正的变化是开发工作之一-基本功能没有变化。 (实际上,WPF中的所有内容都是如此。如果您有几年的开发时间可以花,可以通过直接针对DirectX API进行编程来完成WPF的所有工作...)

WPF自动考虑标称DPI配置。在Win32中,如果您希望您的应用程序对标称DPI敏感,则必须编写其他代码才能实现此目标,并且如果要避免诸如文本被某些DPI裁剪的问题,则必须处理各种可怕的布局问题。 。 (尽管现在我们在.NET 4中具有GDI32样式的文本呈现功能,但是您可以在WPF应用程序中重新选择所有这些问题...)

因此,您的问题的答案基本上是:没有区别。 WPF使考虑DPI变得容易得多,但是在这里并没有启用任何新行为。

从根本上说,WPF遇到与经典Win32应用程序完全相同的问题,原因很简单,因为它可以访问与经典Win32应用程序完全相同的信息。正如此处其他答案中链接的页面所讨论的那样,Windows通常不知道DPI到底是什么。在大多数情况下,它会告诉您显示器为96dpi。好吧,我的计算机上连接了3个屏幕,Windows报告的所有屏幕均为96dpi,即使它们都不是真正的96dpi,实际上它们也不是相同的dpi。

最重要的是:Windows通常不知道屏幕的实际DPI是什么。 WPF无法克服任何困难。如果WPF可以发现真正的DPI,Win32应用程序也可以发现它。

关于wpf - WPF决议独立性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4344112/

10-17 02:38