2009-09-20 86 views
1

我有以下ImageBrush聲明,我想用它來繪製窗口的背景。爲什麼我的ImageBrush會縮放平鋪圖像?

 <ImageBrush x:Key="Fondo" 
     ImageSource="Fondo.png"   
     Viewport="0,0,0.1,0.1" TileMode="Tile"/> 

如果我使用靜態資源綁定到窗口的背景屬性設置它刷正確呈現,但圖像被縮放。這是我不想要的行爲,我希望應用程序以其原始分辨率使用圖像,並根據需要重複此操作以填充窗口背景,而不進行任何縮放。我不知道我做錯了什麼。

我使用的圖像寬200px,高200px。我在那裏的視口值被猜到了,但是在我這樣做之前,它並沒有工作。

感謝所有幫助

編輯:修正了一個矛盾的問題

回答

5

發現問題。該圖像是一個爲72 dpi分辨率設計的PNG。因此WPF將其縮放以匹配標準的96 dpi分辨率。問題不在代碼中。

+0

你是怎麼修復它的? – 2010-02-16 08:50:35

+0

我修正了它改變圖像的分辨率。我以72 dpi的分辨率在Adobe Fireworks中創建圖像。問題在於WPF以96 dpi的分辨率工作,所以圖像被自動縮放。如果您遇到同樣的問題,請將圖像修改爲96 dpi,或者如果可能的話,使用向量化的圖像 – 2010-02-22 22:16:31

+1

您拯救了我的生命謝謝,我想我在想弄明白爲什麼圖像在wpf中更大 – elios264 2015-12-15 19:17:16

2

如果您知道源圖像的分辨率,可以設置視框和視值像素。將ViewBoxUnits和ViewPortUnits設置爲絕對,你應該能夠達到你想要的效果。

<ImageBrush ViewBox="0,0,200,200" 
ViewBoxUnits="Absolute" 
ViewPort="0,0,200,200" 
ViewPortUnits="Absolute" /> 
+0

不起作用。圖像仍在拉伸......不過謝謝 – 2009-09-20 16:26:10