WPF中的图像变得模糊
c#
image
image-processing
5
0

我正在使用C#在WPF中开发应用程序。我将图像放在WrapPanel中,并在带有一个边框的网格内显示,并且还在Buttons中使用图像。问题是我的图像控件失去了质量。我无法在此处发布图片,因此仅在此处进行描述。

我为图像使用了SnapsToDevicePixels="True" ,但看起来仍然很模糊。

更新:

在这里,我分享了下面的图片: 在此处输入图片说明

参考资料:
Stack Overflow
收藏
评论
共 5 个回答
高赞 时间 活跃

我认为Markus所说的是解决问题并尝试在其中添加一个属性的一种方法, RenderOptions.EdgeMode="Aliased"我所表示的每个图像添加RenderOptions.EdgeMode="Aliased"

<Image Source="/LoginPanel;component/Icons/icoLogin.ico"
       RenderOptions.BitmapScalingMode="NearestNeighbor"
       RenderOptions.EdgeMode="Aliased"/>

如果仍然无法解决问题,则可以参考此http://blogs.msdn.com/b/dwayneneed/archive/2007/10/05/blurry-bitmaps.aspx来创建自定义Bitmap类并应用于所有给您带来麻烦的图片。

您还可以看到此堆栈溢出问题

收藏
评论

我遇到了缩放引起的图像背景模糊问题,解决方案比您想象的要简单得多。起初,我想知道是否将其缩放为2的幂,但是缩放比例实际上与系统DPI(96):图像DPI(72,这是许多编辑器的默认值)的比率匹配。如果将图像调整为96 DPI,它将使用默认的Windows设置显示完美的像素。

编辑:尝试了具有高细节对比度的图像,并且图像被稍微柔化了。

收藏
评论

这对我有用

<Image Source="/LoginPanel;component/Icons/icoLogin.ico"
       RenderOptions.BitmapScalingMode="NearestNeighbor"</Image>

为每个图像设置RenderOptions.BitmapScalingMode =“ NearestNeighbor”。另外,也可以在StackOverflow上查看此问题

编辑:
这是我的示例代码

<Window x:Class="MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="661">
    <WrapPanel>
        <Button VerticalAlignment="Center">
            <Image Source="/WpfApplication1;component/icoChip32x32.ico"
               RenderOptions.BitmapScalingMode="NearestNeighbor" Stretch="None"></Image>
        </Button>
        <Button VerticalAlignment="Center">
            <Image Source="/WpfApplication1;component/icoChip32x32.ico"
                   RenderOptions.BitmapScalingMode="NearestNeighbor" Stretch="None"></Image>
        </Button>

        <Button VerticalAlignment="Center">
            <Image Source="/WpfApplication1;component/Presentation-Edit.png"
               RenderOptions.BitmapScalingMode="NearestNeighbor" Stretch="None"></Image>
        </Button>
        <Button VerticalAlignment="Center">
            <Image Source="/WpfApplication1;component/Presentation-Edit.png"
                   RenderOptions.BitmapScalingMode="NearestNeighbor" Stretch="None"></Image>
        </Button>
    </WrapPanel>
</Window>

这是我的结果:
...这是我的结果

收藏
评论

SnapsToDevicePixels似乎不适用于位图。

NearestNeighbor选项实际上会转换位图,并最终以与原始位图不同的位图结束。

在WPF 4中,引入了FrameworkElement上的属性“ UseLayoutRounding ”来解决此问题。

通过在根元素上将此属性设置为True,例如Window可以将子元素在像素边缘对齐。

<Window UseLayoutRounding="True">...</Window>
收藏
评论

如果将图像用作内容,请在父元素上使用UseLayoutRounding =“ True”属性。您的情况是按钮。

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号