2014-03-04 46 views
0

在WPF中,我可以做RenderOptions.BitmapScalingMode,但這在Metro應用程序中不可用。當我縮小圖像時,有沒有辦法讓質量更好?Metro App stretch =「fill」導致質量差

+0

歡迎來到Stack Overflow!請不要包含關於問題標題中使用的語言的信息,除非在沒有它的情況下沒有意義。標籤用於此目的。 –

回答

0

如果您希望圖像保持其初始比例,則不應使用填充Stretch屬性。

使用統一或UniformToFill。

此處瞭解詳情: http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.image.aspx http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.image.stretch.aspx http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.media.stretch.aspx

接下來,縮小圖像的主題,已經有這裏的答案:High quality image scaling

基本上,使用DecodePixelHeight或DecodePixelWidth或更好的方法是使用不同的源圖像。

http://msdn.microsoft.com/en-us/library/windows/apps/hh465362.aspx

不要使用按比例縮小被縮小顯示比例文物和標準片鋸齒狀邊緣較大的圖像更大的圖像。照片是唯一的例外,因爲縮小時它們看起來不錯。您應該使用上述指導確保您的圖片在100%的比例上看起來很棒。

+0

我有一個最大尺寸的網格。網格在運行時用來自Web源的圖像填充。圖像可能比網格大,因此我會捕獲加載事件並將網格列設置爲最大,這會縮小圖像的比例。如果網格爲我縮放圖像,我如何使用DecodePixel? –

+0

我不知道我是否理解正確,但我認爲你說圖像在網格中顯示一次,然後在設置網格列的大小後縮小。在任何情況下,也許你應該在將圖像放入網格之前計算縮小的圖像大小,然後使用DecodePixelWidth(或Height)進行修復。你可以用DecodePixel(Width | Height)來嘗試這種方法,看看結果圖像是否適合你的需要(質量足夠好)? – Drenskin

+0

我首先按照您的建議設置了DecodePixel尺寸的圖像,但質量仍然很差。我認爲問題在於尺寸的差異,我從圖像可能會從1000到150最大。 –