2010-10-18 48 views
1

使用以下代碼,我無法讓背景圖像以其原始大小顯示(它總是大一點)。我試圖改變Stretch財產,但「無」似乎是最合適的價值。背景圖像將不會以其原始大小顯示

<Canvas Width="500" Height="500"> 
    <Canvas.Background> 
     <ImageBrush 
      ImageSource="{Binding ElementName=w_window, Path=BackgroundImagePath}" 
      Stretch="None" 
      AlignmentX="Left" 
      AlignmentY="Top" 
      /> 
    </Canvas.Background> 
</Canvas> 

在下面的圖片,你可以看到在左邊和圖片瀏覽器(設置爲原始大小),在右邊我的應用程序。 Comparison of size as rendered by my application (left) and a photo viewer (right)

有什麼建議嗎? (順便說一句,設置ClipToBounds="True"不起作用。)

看來我的問題不限於圖像是背景的時候。以下代碼(其中Image是唯一元素)具有相同的大小問題。這不僅僅是我的機器有這個問題(即應用程序在其他機器上有這個問題)。

<Window x:Class="DiagramDesigner.Window2" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="Window2" Height="300" Width="1000"> 
    <Image 
     Source="C:\Users\patk\Downloads\Bottom_wnums.jpg" 
     Stretch="None" 
     HorizontalAlignment="Left" 
     VerticalAlignment="Top" 
     /> 
</Window> 
+0

你上面寫的(用硬編碼文件替換ImageSource)對我來說工作正常。你能添加一個截圖嗎? – 2010-10-18 18:48:05

+0

上面的Canvas是否包含在ViewBox控件中? – ASanch 2010-10-18 19:40:23

+0

@karmicpuppet:不,但我注意到ImageBrush具有Viewbox和Viewport屬性。我應該嘗試手動設置它們嗎? – Pat 2010-10-18 20:17:10

回答

3

我以前遇到過這個問題。儘管如此,我當時使用的是PNG文件而不是JPG,但我認爲這個問題可能是相關的。 這可能與您使用的圖像有關(因爲您發佈的代碼看起來很好)。圖像應該存儲在96 DPI(這是標準)。其他值可能會導致圖像縮放。 如果您確實無法更改/修復圖像以滿足此要求,則可能需要檢查this post from Scott Hanselman以更多地瞭解問題以找到正確的答案。

+0

我曾嘗試過使用其他幾種格式(PNG,BMP,JPG),但我沒有想過檢查圖像分辨率 - 它是在72dpi。感謝您找出答案! – Pat 2010-10-19 15:27:30

+0

解決這個問題的快速技巧就是在Paint中打開它們,然後立即保存它們。油漆將DPI重置爲96.我們爲較小的批次列表執行此操作。 – MarqueIV 2011-12-21 00:13:15