2010-11-03 51 views
11

有誰知道Silverlight/WFP使用了什麼度量單位?例如,如果我創建一個新按鈕並將其高度設置爲150,那是150像素嗎?點?毫米?Silverlight和WPF使用哪些度量單位?

在繼續閱讀代碼之前,我在Adobe Illustrator中設計了所有應用程序,雖然我嘗試將所有內容都設置爲Illustrator文件中的尺寸,但Silverlight應用程序通常較大。

回答

16

MSDN文檔指出FrameworkElement.Height財產(爲Silverlight)是指:

的高度,以像素爲單位,對象的

但是,for WPF它指的是:

與設備無關的單位(1/96英寸)測量

因此,要回答你的問題...... 像素爲Silverlight,設備無關的單位爲WPF。

+0

不是pixles。設備獨立單元。 – 2010-11-03 13:19:45

+0

我將不得不在Illustrator中使用我的設置。我一直在使用像素而不是文字。下面是一些關於WPF Silverlight的VS http://msdn.microsoft.com/en-us/library/cc903925(VS.95).aspx – Quentamia 2010-11-03 15:27:31

+1

FYI更多信息:微軟使用96 ppi的。 Adobe Illustrator使用72 ppi。 – Quentamia 2010-11-04 05:12:22

1

它們是設備獨立單元

你可以找到更詳細的解釋here.

+0

不Independet。獨立。 – Grozz 2010-11-03 13:22:36

+0

謝謝。我做了更正。 – 2010-11-03 13:24:59

1

該文檔涉及像素,但是這些像素是每英寸有96個像素。在120 DPI顯示器上顯示時,寬度爲96的行將爲120個實際設備像素。同樣,在具有600 DPI的打印機輸出上繪製的這條線將是600像素長。

24

儘管在理論中,WPF中的1個單位是1/96英寸,但在實際中通常不是這種情況。

打印時通常是這樣。但在屏幕上很少有這種情況。原因是Windows幾乎總是知道打印機的真實分辨率,但幾乎不知道屏幕的真實分辨率。

例如,我有三個屏幕連接到我的電腦。 Windows認爲它們都具有每英寸96像素的分辨率。其實他們沒有。其中兩個分辨率爲每英寸101個像素,另一個分辨率爲每英寸94個像素。 (爲什麼?因爲Windows沒有辦法爲自己設定真正的解決方案,而我沒有告訴它,他們都具有相同像素大小的虛構接近事實,並且是一個方便的小說。 )

所以當我創建一個WPF中的Width和Height都設置爲96的Rectangle時,Rectangle的大小實際上取決於它出現在哪個屏幕上。 Windows認爲所有3個屏幕的分辨率均爲每英寸96像素,因此無論顯示哪個屏幕,它都會將該矩形呈現爲96像素高和寬。這將使它在兩個屏幕上看起來高0.95英寸,在第三個上看起來高1.02英寸。

所以在實踐中,這意味着我的計算機上WPF中的單位要麼是1/100英寸,要麼是實踐中的1/94英寸。 (也就是說,實際上,WPF中1個單元的大小在我的特定設置中正好是1像素的大小,不管像素有多大。)

我可以改變這種狀況。我可以重新配置Windows - 我可以告訴它所有3個屏幕的實際分辨率,在這種情況下,標稱和實際的WPF單元尺寸將重合。或者,我可以撒謊 - 我可以宣稱我有每英寸屏200萬像素,在這種情況下,一切都將是巨大的......

這裏的基本問題是,有對電腦沒有標準的方式來發現真正的大小的屏幕上的物理像素,很少有人打算手動設置它。 (事實上​​,通過「正確配置」可能會導致問題,因爲許多軟件在執行操作時表現不正確。)因此,大多數Windows計算機並未正確向WPF報告物理像素大小 - 它們可以「因爲他們不知道。

因此,有沒有可靠的答案的問題 - 1個單位在WPF可以在屏幕上幾乎任何東西。 (實際上,大多數情況下,結果是1個像素,因爲如果你不告訴Windows其他任何東西,它默認假設你的屏幕像素高度爲1/96英寸,這是同1個WPF單位。而對於大多數桌面屏幕,這實際上很可能是一個很好的猜測。但是,這是不是普遍的。在與過去被稱爲「大字體」例如配置的系統,你會發現一個不同的標稱屏幕分辨率和1個WPF單元將對應略多於1個物理像素 - 事實上大約爲1.2)。

使用打印機時,它更容易預測。打印機總是能夠正確報告他們的分辨率。因此,如果您打印的內容高達96 WPF,您可以確信它的高度爲1英寸。

+0

很好的描述。我有一臺筆記本電腦的雙顯示器連接。筆記本電腦是一個每英寸有134個物理像素的Vaio VPCF2。外接顯示器是HP 2310m,每分鐘95.7 ppi。如果將標籤寬度設置爲96,則HP顯示爲1.25「,如果將其設置爲134,則Vaio顯示爲1.25」。所以我必須將我預期的ppi提高0.8,讓它在我的顯示器上顯示爲1「,這取決於我期望它顯示的顯示器,但實際上,我並不關心,所以畢竟,我要和96一起「足夠接近」。 – cod3monk3y 2013-02-01 17:08:49