2

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

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

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

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

4

4 回答 4

6

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

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

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

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

于 2012-08-27T10:54:08.447 回答
1

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

<Image Stretch="Fill">
    <Image.Source>
        <BitmapImage CacheOption="OnLoad" DecodePixelWidth="2500" UriSource="Images/image.jpg"/>
    </Image.Source>
</Image>
于 2012-08-27T10:53:54.723 回答
0

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

于 2012-08-27T08:49:11.440 回答
-1

尝试这个。

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;
于 2015-01-12T04:17:56.433 回答