Que*_*mia 13 silverlight wpf xaml units-of-measurement
有谁知道Silverlight/WFP使用的测量单位是什么?例如,如果我创建一个新按钮并将其高度设置为150,那是150像素吗?点?毫米?
在继续编写代码之前,我在Adobe Illustrator中设计了所有应用程序,虽然我尝试将所有内容设置为Illustrator文件中的维度,但Silverlight应用程序通常更大.
Ian*_*ths 26
虽然从理论上讲,WPF中的1个单位是1/96英寸,但实际上并非如此.
印刷时通常都是如此.但它在屏幕上很少真实.原因是Windows几乎总是知道打印机的真正分辨率,但几乎从不知道屏幕的真实分辨率.
例如,我有三个屏幕连接到我的电脑.Windows认为它们都具有每英寸96像素的分辨率.实际上他们没有.其中两个分辨率为每英寸101像素,其中一个分辨率为每英寸94像素.(为什么?因为Windows没有办法为自己设计真正的分辨率,而且我没有告诉它.它们都具有相同像素大小的小说接近真相,结果证明是一个方便的小说. )
因此,当我在WPF中创建一个矩形,宽度和高度都设置为96时,矩形的大小实际上取决于它出现在哪个屏幕上.Windows认为所有3个屏幕的分辨率均为每英寸96像素,因此无论它出现在哪个屏幕上,它都会将矩形渲染为96像素高和宽.这将使其在两个屏幕上显示0.95英寸高,在第三个屏幕上显示1.02英寸高.
所以在实践中,这意味着我的计算机上的WPF中的单位要么是1/100英寸,要么是1/94英寸.(即,实际上,无论像素有多大,WPF中1个单位的大小正好是我特定设置中的1个像素的大小.)
我可以改变这一点.我可以重新配置Windows - 我可以告诉它所有3个屏幕的实际分辨率,在这种情况下,名义和实际WPF单位大小将重合.或者我可以撒谎 - 我可以声称我每英寸屏幕有200像素,在这种情况下,一切都会很大......
这里的基本问题是计算机没有标准的方法来发现屏幕上物理像素的真实大小,很少有人愿意手动设置它.(事实上,你可以通过"正确"配置它来引发问题,因为当你这么做时,许多软件的行为都不正确.)因此,大多数Windows计算机都没有正确地向WPF报告物理像素大小 - 他们可以'因为他们不知道.
因此,对于这个问题没有可靠的答案 - WPF中的1个单元几乎可以在屏幕上显示任何内容.(实际上,大部分时间,它都是1像素,只是因为如果你不告诉Windows其他任何东西,它默认假设你的屏幕有1/96英寸高的像素,这是与1 WPF单元相同.对于大多数桌面屏幕,实际上很可能是一个很好的猜测.但这不是通用的.例如,在配置了以前称为"大字体"的系统上,你会发现一个不同的标称屏幕分辨率,1个WPF单元将对应略多于1个物理像素 - 事实上大约为1.2.)
使用打印机,它更加可预测.打印机总是能够正确报告其分辨率.因此,如果您打印96个WPF单位高的东西,您可以确信它将高1英寸.
Don*_*nut 20
MSDN的文档声明该FrameworkElement.Height
属性(对于Silverlight)是指:
对象的高度(以像素为单位)
但是,对于WPF,它指的是:
与设备无关的单元(1/96英寸)测量
那么,回答你的问题...... Silverlight的像素,WPF的与设备无关的单位.