2012-03-12 47 views
1

我需要在WPF中構建一個打印控件。像素在WPF中是雙倍的嗎?

控件是一個畫布,用戶可以選擇一個尺寸(A3,A4或自定義) 用戶還可以在該畫布上添加一些對象(標籤,網格),並且我需要保存它的位置以最終打印它。

一個例子是保證金(厚度)屬性:

公共財產作爲雙
會員System.Windows.Thickness

摘要:
獲取或設置邊界矩形左側的寬度(以像素爲單位)。

返回值:
System.Double表示的寬度,以像素,左側的邊界矩形的用於 System.Windows.Thickness的此實例的 。像素等於1/96英寸。默認值爲0.

像素值如何爲Double?我可以有1.5像素嗎? 我應該在Canvas中保存每個控件的位置(比如數據庫),以像素爲單位,英寸,釐米,毫米?

回答

1

正如你寫道:

像素等於1/96的一英寸

然後,它可以是一個浮點數。四捨五入將在渲染結束後對您的設備進行操作(例如,可以將其用於反鋸齒)。我同意FP數學和運算速度要慢得多,但至少你對API有一致性(並且可以修改舍入精度/方法)。

在我應該保存每個控件在我的畫布(比如數據庫)中的位置,以像素爲單位,英寸,釐米,毫米?

這取決於您正在開發什麼樣的應用程序?這種「佈局」將在不同的用戶之間共享,或者他們是每個用戶?什麼樣的頁面您使用您的控件?固定大小的頁面?如果固定,您可以使用任何您想要的作爲度量單位(像素),如果它是動態的(基於屏幕分辨率),您可能需要將它們轉換爲百分比。

+0

正如我寫的,我做了類似Crystal Reports的事情。我需要向一個字段指出它的位置,然後在該字段中會出現一些文本。帆布的格式可以是標準的A3,A4或自定義尺寸的紙張... – serhio 2012-03-12 13:43:46

+0

對不起,我確實錯過了一些單詞!我認爲**如果你正在使用一個頁面,你應該使用印刷單位的度量(無論如何,你的用戶會看到他們自己的單位),所以我會保持像素(定義爲1/96英寸)爲「中性」單元。通過這種方式,如果用戶更改報告的度量單位,您將能夠更新UI而不會對基礎數據進行任何更改。當然,這是一個隨心所欲的選擇,例如,微軟報告總是使用英寸和點作爲「中立」單位。 – 2012-03-12 13:58:46

0

WPF使用亞像素渲染,許多人聲稱它使一些事情看起來模糊,如果你使用佈局舍入,將所有元素捕捉到整個像素值,並使事情看起來更清晰。

在主窗口上設置「SnapsToDevicePixels」應該允許你有int值。

+0

因此,當我在數據庫中保存一個對象「位置」時,我應該使用雙精度還是整數? – serhio 2012-03-12 13:45:14

+0

由於WPF可以使用雙打,我會在數據庫中提供這種靈活性。但是,如果您總是將SnapsToDevicePixels用於使用該數據庫字段的應用程序,那麼您可以將位置存儲爲整數。 – Erick 2012-03-12 14:54:48

+0

我猜動畫不太流利,如果它是整數,但我知道這不是真正的問題 – Silvermind 2012-03-12 15:48:29