像素,在WPF中是双倍的?

时间:2012-03-12 13:26:18

标签: .net wpf

我需要在WPF中构建一个打印控件。

该控件是Canvas,用户可以选择尺寸(A3,A4或自定义) 用户还可以在该画布上添加一些objets(标签,网格),我需要保存其位置以最终打印它。

一个例子是边距(厚度)属性:

  

公共财产 As Double
   System.Windows.Thickness

的成员      

要点:
  获取或设置边界矩形左侧的宽度(以像素为单位)。

     

返回值:
  一个 System.Double ,代表宽度,以像素为单位,   此实例的边界矩形的左侧   System.Windows.Thickness。像素等于1/96英寸。默认值为0.

以像素为单位的值Double是多少?我可以有1.5像素吗? 我应该在Canvas中保存每个控件的位置(例如,在数据库中),以像素,英寸,厘米,毫米为单位?

2 个答案:

答案 0 :(得分:1)

正如你所写:

  

像素等于1/96英寸

然后它可以是浮点数。舍入将在您的设备渲染结束时进行操作(例如,可以考虑使用抗锯齿)。我同意FP数学和操作要慢得多,但至少你对API有一致性(并且可以修改舍入精度/方法)。

  

我应该在Canvas中保存每个控件的位置(例如,在数据库中),以像素,英寸,厘米,毫米为单位?

这取决于你正在开发什么样的应用程序? “布局”将在不同用户之间共享,还是按用户分享?您用于控件的是什么类型的?固定尺寸页面?如果修复了你可以使用任何你想要的单位作为度量单位(像素也是如此),如果它是动态的(基于屏幕分辨率),你可能需要将它们转换为百分比。

答案 1 :(得分:0)

WPF使用子像素渲染,许多人声称它使某些东西看起来模糊,如果你使用布局舍入将所有元素捕捉到整个像素值并使事情看起来更清晰。

在主窗口上设置“SnapsToDevicePixels”应该允许你拥有int值。