在wpf中使用Image时,时常会出现图像模糊的情况,有两种方法可以解决这一问题:
-
设置Image的SnapsToDevicePixels属性为true。
<Image Source="images/OrderedList.png" Width="20" Height="20" SnapsToDevicePixels="True" />网上所能查到的方法大多是这种方法,然而有的时候,这种方法也不起作用,这时候我们可以试试下面这种方法。
- 设置附加属性RenderOptions.BitmapScalingMode="NearestNeighbor"
<Image Source="images/OrderedList.png" Width="20" Height="20" RenderOptions.BitmapScalingMode="NearestNeighbor" />
这个附加属性也可以放在window中,这样就对整个窗体的所有image对象都起作用了。
<Window RenderOptions.BitmapScalingMode="NearestNeighbor" />
补充:今天看到园子里另外一篇文章的介绍的方法,设置UseLayoutRounding="True",试了一下,确实这个是最好的方式,基本上和WinForm下的显示效果是一致的了。原文对各种方案的效果介绍得比较详细,值得一读:http://www.cnblogs.com/xiaokang088/p/3200431.html
这个属性是.net 4.0新增的,我写这篇文章的时候还没有这种方案,看来微软对WPF也还是在不断的改进的。