2011-04-30 17 views
5

[imgur刪除圖像]如何讓圖像不舒展?

左邊的圖標是這個代碼的結果:

<Button Height="23" HorizontalAlignment="Left" Margin="12,276,0,0" Name="button1" VerticalAlignment="Top" Width="75"> 
     <StackPanel Orientation="Horizontal"> 
      <Image Source="Resources/add.png" Stretch="None" /> 
      <TextBlock Margin="5,0,0,0" Text="Add" /> 
     </StackPanel> 
    </Button> 

右邊的一個是置於它使用Photoshop旁邊的原始圖像。看起來,通過代碼添加的圖像會被像素拉長,從而導致一些失真。我如何防止這種情況發生?

+0

如果您在xaml中明確設置了寬度和高度屬性,會發生什麼情況? – Eugen 2011-04-30 23:04:40

+0

@Eugen:也試過了。不會改變任何東西。如果我將它設置爲一個像素,它將變成正確的大小,但由於縮放比例它仍然模糊不清。 – mpen 2011-04-30 23:41:12

+0

圖像損壞... – itsho 2013-05-18 18:25:08

回答

0

這個固定對我來說:

在您的根元素(即主窗口)添加該屬性:UseLayoutRounding="True"

credit

8

Stretch="None"應該這樣做。如果顯示圖像的方式有所不同,這可能是由於像素在「邊緣」結束。

您可以嘗試設置SnapsToDevicePixels="True"來避免這種情況。

+0

不......也沒有做到這一點。 – mpen 2011-04-30 23:26:25

+0

如何設置附加屬性:'RenderOptions.BitmapScalingMode =「HighQuality」'(或者其他某個值)? – 2011-04-30 23:29:40

+0

@HB:不應該縮放,但儘管如此,嘗試,仍然看起來一樣。 – mpen 2011-04-30 23:39:44

3

我不能真正看到你的例子中發生了什麼,但是這種WPF問題的一個常見原因是PNG文件中的DPI值不是96(如果它來自任何東西,通常是72與Mac遺產)。

+0

那麼,我該如何檢查DPI值是什麼,我該如何解決?這是來自famfamfam的絲綢圖標集的未經編輯的圖標。 – mpen 2011-04-30 23:28:23

+1

@Mark,在Photoshop中,使用「圖像/調整大小...」,然後取消選中「重新取樣」。然後輸入新的像素/英寸值並按'確定'。圖像的像素尺寸不會改變,但是當您重新保存PNG時,新的元數據將被寫入。事實上,如果dpi不等於96,意味着當Image.Stretch =「None」時,WPF不會使用本地像素大小。非常感謝威爾爲這個真棒修復。 – 2015-02-27 19:47:22

+0

如果有人需要用於DPI更正的工具:您可以使用[Paint.NET](http://www.getpaint.net),該工具可免費且易於使用。 – Beauty 2017-03-29 15:32:39

1

實際上,最近鄰打算讓發動機像素跳過源圖像中縮放時。如果有線性選項,這可能會更好,因爲它意味着從源圖像逐像素地縮放。

+0

你是完全正確的,如果你閱讀我在接受的答案下面留下的評論,你會發現那也是我發現的。我標記它是正確的,因爲他的'UseLayoutRounding'建議修復它。 – mpen 2012-03-21 00:43:32

1

我只設法明確設置寬度或高度來解決這個問題。所以,如果你知道這個圖像是48個像素高這樣做:

<Image Source="myImage.png" Height="48" UseLayoutRounding="True"/> 
1

添加彈力=無來自rezising

<ImageBrush ImageSource="rtgEnhanced.png" AlignmentX="Left" AlignmentY="Bottom" Stretch="None"></ImageBrush> 
1

PNG圖像可能會產生一種叫保存在他們的PHY塊kepts圖像。該塊定義圖像打算顯示在的DPI。如果圖像的DPI與顯示器的DPI不匹配,則它將被WPF拉伸以使其顯示爲「預期」尺寸。這通常(至少對我而言)根本不是我想要的,並導致很多挫折。

爲了去除「預期」拉伸,一種選擇是從PNG中去除pHYs塊。

您可以使用像TweakPNG這樣的工具來檢查並去除pHYs。

或者,您可以簡單地使用正確的DPI編碼保存圖像,或者根本沒有,假設您的圖像編輯軟件支持。