背景图像不会以原始大小显示

时间:2010-10-18 18:27:56

标签: .net wpf image background-image

使用以下代码,我无法让背景图像以原始大小显示(它总是更大)。我尝试更改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>

1 个答案:

答案 0 :(得分:3)

之前我遇到过这个问题。不过我当时使用的是PNG文件而不是JPG,但我认为问题可能是相关的。 这可能是您正在使用的图像的问题(因为您发布的代码看起来很好)。图像应存储在96 DPI(这是标准)。其他值可能会导致图像缩放。 如果您确实无法更改/修复图片以满足此要求,您可能需要检查this post from Scott Hanselman以更多地了解问题,以便找到正确的答案。