项目场景:
最近做了一个项目,渲染大尺寸图片刷新频率比较快
问题描述
尤其是白底黑字的图片,每个文字都有白点,最主要的是”特别模糊“,传过来图片像素比较大不可能模糊;
<Image x:Name="img" Source="{Binding ImageSourc}" />
原因分析:
网上资料比较少,我以为可能是我赋值的地方有问题,但是仔细查看了好几次也没找到问题,后来发现需要设置UseLayoutRounding属性
解决方案:
<Image x:Name="img" Source="{Binding ImageSourc}" UseLayoutRounding="True" SnapsToDevicePixels="True" RenderOptions.BitmapScalingMode="HighQuality" >
主要就是需要设置UseLayoutRounding 属性。官方解释:
1.UseLayoutRounding :设置一个值,该值指示是否应向此元素的大小和位置布局应用布局舍入。
2.SnapsToDevicePixels:该值确定在呈现过程中,此元素的呈现是否应使用特定于设备的像素设置。 这是依赖项属性。
3.RenderOptions.BitmapScalingMode主要是为了大尺寸图片显示更流畅:对任何位图缩放进行动画处理时,默认高质量图像重采样算法有时可能由于消耗过多系统资源导致帧速率下降,从而导致动画明显变慢。 通过将属性设置为 BitmapScalingMode 该属性 BitmapScalingMode.LowQuality,可以在缩放位图时创建更流畅的动画。
设置以上三个属性,基本问题就可以解决问题。