我正在使用C#和WPF开发应用程序。我将图像放在WrapPanel中,并在一个带有边框的Grid中显示,还在按钮中使用了这些图像。问题是我的图像控件失去了其质量。尽管我使用了
。
SnapsToDevicePixels="True"
,但它仍然看起来模糊不清。这里分享了一张图片:![enter image description here](https://istack.dev59.com/mC78t.webp)
SnapsToDevicePixels="True"
,但它仍然看起来模糊不清。这里分享了一张图片:我认为Markus说的是解决你问题的一种方法,尝试在每个图像中添加一个属性 RenderOptions.EdgeMode="Aliased"
:
我认为Markus提到的方法是解决你问题的一种方式,尝试为每个图像添加一个属性RenderOptions.EdgeMode="Aliased"
:
<Image Source="/LoginPanel;component/Icons/icoLogin.ico"
RenderOptions.BitmapScalingMode="NearestNeighbor"
RenderOptions.EdgeMode="Aliased"/>
如果你仍然无法解决问题,那么可以参考这篇文章(模糊位图)创建一个自定义的Bitmap类并将其应用于所有制造问题的图像。
你也可以查看这个Stack Overflow的问题。
SnapsToDevicePixels似乎不能用于位图。
NearestNeighbor选项实际上会转换位图,并最终得到与原始位图不同的位图。
在WPF 4中,引入了FrameworkElement上的属性“UseLayoutRounding”来解决这个问题。
通过将此属性设置为True,在根元素(如Window)上,将在像素边缘对齐子元素。
<Window UseLayoutRounding="True">...</Window>
这对我有效
<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>
这是我的结果:
我曾遇到一个模糊的图像背景问题,这是由于缩放引起的。解决方法比您想象的要简单得多。一开始我以为它被缩放为二次幂纹理大小,但实际上缩放匹配了系统 DPI (96) : 图像 DPI (72,这是许多编辑器的默认值) 的比例。如果将图像调整为 96 DPI,则可以在默认 Windows 设置下完美地显示像素。
注:尝试了一个具有高对比度细节的图像,略微变软。
当我将所有图标的DPI更改为96时,一切正常!