我在WPF中有一个图像控件。我需要减小图像控件的宽度和高度。但是当我这样做时,图像看起来不好,数据损失更多。
所以我想减小图像分辨率,而不仅仅是改变图像控件的宽度和高度。
有人可以帮助我如何更改WPF图像控件中绑定图像的分辨率吗?
[我的意思是图像已经绑定到图像控件,现在我只需要改变分辨率]
所以我想减小图像分辨率,而不仅仅是改变图像控件的宽度和高度。
有人可以帮助我如何更改WPF图像控件中绑定图像的分辨率吗?
[我的意思是图像已经绑定到图像控件,现在我只需要改变分辨率]
在 .NET 4 中,它们将默认的图像缩放更改为低质量的...因此,您可以使用 BitmapScalingMode
切换回更高质量的一个:
<Image RenderOptions.BitmapScalingMode="HighQuality"
Source="myimage.png"
Width="100"
Height="100" />
如果您的源图像很大,您还可以将上述选项与Decode选项结合使用(这只是减少应用程序内存使用)。
When should I use SnapsToDevicePixels in WPF 4.0? - 在WPF 4.0中何时使用SnapsToDevicePixels?
http://blogs.msdn.com/b/text/archive/2009/08/27/layout-rounding.aspx - Layout Rounding(布局舍入)。
<Image Stretch="Fill">
<Image.Source>
<BitmapImage CacheOption="OnLoad" DecodePixelWidth="2500" UriSource="Images/image.jpg"/>
</Image.Source>
</Image>
1) 尝试使用ViewBox:将图像放置在ViewBox内。
2) 有时呈现引擎由于像素对齐问题而失去质量,尤其是在低分辨率设备上。查看SnapsToDevicePixels属性,并尝试在包含控件和/或ViewBox中将其设置为true。
3) 显然,您可以编写一个执行分辨率更改的控件,但这是相当费力的。
试试这个。
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;
DecodePixelWidth
和DecodePixelHeight
? - Casper