【问题标题】:Background image won't display at its original size背景图像不会以其原始大小显示
【发布时间】:2010-10-19 08:34:45
【问题描述】:

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

在下图中,您可以在左侧看到我的应用,在右侧看到照片查看器(设置为原始大小)。

有什么建议吗? (顺便说一句,设置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>

【问题讨论】:

  • 你上面写的(用硬编码文件替换 ImageSource)对我来说很好。可以加个截图吗?
  • 您上面的 Canvas 是否有可能被包装在 ViewBox 控件中?
  • @karmicpuppet:不,但我注意到 ImageBrush 具有 Viewbox 和 Viewport 属性。我应该尝试手动设置它们吗?
  • 嗯...我认为没有必要。我在上面尝试了您的代码(就像 Wonko 所做的那样),它对我来说也很好用。我想知道,您的 Canvas 的父控件是什么?
  • 感谢您的帮助,Wonko 和 karmicpuppet。我应该尝试使用另一张图片 - 经验教训(希望 :-)。

标签: .net wpf image background-image


【解决方案1】:

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

【讨论】:

  • 我尝试过使用其他几种格式(PNG、BMP、JPG),但我没想过要检查图像分辨率——它是 72dpi。感谢您解决这个问题!
  • 解决此类问题的快速技巧是简单地在 Paint 中打开它们,然后立即保存它们。 Paint 将 DPI 重置为 96。我们对较小的批处理列表执行此操作。
猜你喜欢
  • 2017-06-06
  • 2010-11-28
  • 2016-06-11
  • 2011-12-13
  • 2013-01-16
  • 1970-01-01
  • 2017-06-25
  • 2014-11-30
相关资源
最近更新 更多