为什么所有头寸/尺寸都是双重格式?

Cyb*_*axs 5 silverlight wpf xaml canvas

基本上,我会说坐标是"基于像素的".很容易理解(10,10)处的像素或100像素的宽度.

但由于位置和大小是双重格式,因此大小为100.6,位置为(10.1,50.9).小数值是否会影响位置/大小?

实际上,我通过计算点生成自定义路径.有些点几乎等于1.9999999和2.000000.首先,我想围绕所有点,但我确定xaml(1.99和2.00,它是同一点?)的影响.

Ste*_*e B 7

不,WPF的位置和大小不是基于像素的,而是基于"单位"的.

事实上,当你的scren设置为96 dpi时,1个单位等于1个像素.但是,如果您将屏幕设置为120 dpi,则1个单位将等于1,25像素.

直接的好处是您的应用程序将比Windows窗体应用程序更容易适应更高规模的分辨率.

FrameworkElement.Height属性引用:

该值被解释为与设备无关的单位(1/96英寸)测量值.

最后,我建议你舍入值.不是出于技术原因,而是为了使XAML标记更具可读性和"自然".


Cle*_*ens 5

WPF使用矢量图形.有关详细信息,请参阅可视渲染行为中向量图形部分.矢量图形的一大优点是图形(例如您的路径)可以轻松缩放而不会出现像素化.

如果将计算的点值直接放入路径几何体中,则舍入路径的点并没有多大意义.坐标相对于Path对象的原点,并且Path(或其祖先之一,例如Canvas)本身可能位于分数像素位置.

如果将点值写入XAML,我同意Steve的观点,即舍入会使XAML更好,并且您不会意识到1.99和2之间存在任何差异.