3
  1. 我将屏幕设置为 72 DPI,并设计了一个 100x100 @ 72 DPI 的小 png 图像。这意味着 72 像素代表 1 英寸。
  2. 现在,我将屏幕更改为 120 DPI,并设计了相同的图形 png 图像,其分辨率为 100x100 @ 120 DPI。这意味着 120 像素代表 1 英寸。
  3. 我再次将屏幕更改为 96 DPI。这意味着 96 像素代表 1 英寸。然后创建了一个 WPF 应用程序并添加了两个图像(步骤 1 和步骤 2) -我已将 Stretch Mode 设置为 None

不确定我是否正确理解了这个概念,我希望 72 dpi 的图像在 96 dpi 时看起来更小,因为如果该图像的 72 像素代表 1 英寸,那么在新配置中,96 像素代表 1 英寸。因此,我希望 72 dpi 的图像看起来更小。但事实并非如此。事实上,恰恰相反。72 dpi 的图像在 96 dpi 时看起来更大。为什么?是否像 WPF 在图像方面将始终默认为 96 dpi 一样?

在此处输入图像描述

更新 为什么即使在 120 dpi(将系统 dpi 设置为 120)下,只有 96 dpi 的图像完全适合 200x200 框? 在此处输入图像描述

4

2 回答 2

2

您正在对 WPF 图形单元的设备独立性的性质做出一些奇怪的假设。

无论屏幕设置如何,wpf 世界中与设备无关的像素值 1/96 英寸。这就是为什么只有 96 dpi 实验是正确的。

其次,你的显示器原生dpi有影响

第二个比例因子,“DPI 设置”,是我们将在测试中改变的。WPF 并不独立地知道您的显示器的实际物理 DPI 值是多少。相反,WPF 使用第二个比例因子的当前设置“DPI 设置”。如果“DPI 设置”与真实的物理 DPI 不匹配,那么 WPF 的“分辨率独立性”就会出现问题——尽管实际上并非如此。

http://www.wpflearningexperience.com/?p=41

于 2014-08-26T10:07:53.080 回答
1

每英寸有 72 个点 (DPI) 的图像每英寸将有 72 个点,而具有 120 DPI 的图像将有每英寸 120 个点。因此,如果我们要显示一英寸一英寸的图像,则每边对于 72 DPI 图像将有 72 个点,对于 120 DPI 图像将有 120 个点。

因此,72 DPI 图像中的每个点都大于 120 图像中的每个点,因此整个 72 DPI 图像大于 120 DPI 图像。

如需进一步阅读,您可能希望在 Mindfire Solutions 网站上查看WPF 应用程序页面的 DPI 设置和分辨率。

于 2014-08-26T08:18:42.587 回答