2011-04-30 56 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编码保存图像,或者根本没有,假设您的图像编辑软件支持。