2010-10-18 74 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