2010-12-03 77 views
3

可能重复:
C# WPF resolution independancy?WPF分辨率无关

是与什么有关WPF分辨率独立系统DPI显示器的分辨率之间的差异。
更改两者之间保持窗口的大小相同的WPF在早期不可能在User32中?
编辑: 我正在阅读的书“C Sharp的临WPF”说,如果我们在96 DPI中创建1英寸按钮,然后将DPI更改为120,由于像素密度更大,按钮将变为小(在winforms)。但我试过,我可以看到,在这两种情况下,按钮尺寸保持不变!

这是为什么?

回答

0

实际上,所谓的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应用程序也能够发现它。