降低WPF图像控制中的图像分辨率

时间:2012-08-27 07:56:28

标签: wpf

我在WPF中有一个图像控件。我需要减小图像大小控制的宽度和高度。但是,当我这样做时,图像看起来不太好。数据丢失更多。

所以我想降低图像分辨率,而不仅仅是改变图像控制的宽度和高度。

任何人都可以帮助我如何在WPF图像控制中更改绑定图像的图像分辨率

[我的意思是图像已经绑定到图像控制,现在我只需更改分辨率]

4 个答案:

答案 0 :(得分:6)

在.NET 4中,他们将默认图像缩放更改为低质量图像...因此您可以使用BitmapScalingMode切换回更高质量的图像:

<Image RenderOptions.BitmapScalingMode="HighQuality"
       Source="myimage.png"
       Width="100"
       Height="100" />

如果源图像是一个巨大的图像(这只会减少应用程序中的内存使用量),您还可以将上述内容与其他选项(如“解码”选项)结合使用。

防止“模糊”的其他选项是将UseLayoutRounding="True"放在根元素(即Window)上....建议在.NET 4中使用它而不是SnapToDevicePixels

答案 1 :(得分:0)

1)尝试使用ViewBox:将图像放在ViewBox中 2)有时渲染引擎由于像素对齐问题而失去质量,尤其是在低分辨率设备上。查看SnapsToDevicePixels属性,并尝试在ViewBox的包含控件AND / OR中将其设置为true。
3)显然你可以编写一个执行分辨率更改的控件,但这是一些工作。

答案 2 :(得分:0)

您可以像这样使用DecodePixelWidth属性:

<Image Stretch="Fill">
    <Image.Source>
        <BitmapImage CacheOption="OnLoad" DecodePixelWidth="2500" UriSource="Images/image.jpg"/>
    </Image.Source>
</Image>

答案 3 :(得分:0)

试试这个。

Image img = new Image();

var buffer = System.IO.File.ReadAllBytes(_filePath);
MemoryStream ms = new MemoryStream(buffer);

BitmapImage src = new BitmapImage();
src.BeginInit();
src.StreamSource = ms;
src.DecodePixelHeight = 200;//Your wanted image height
src.DecodePixelWidth = 300; //Your wanted image width 
src.EndInit();

img.Source = src;