当前位置:  开发笔记 > 大数据 > 正文

我的图像很模糊!为什么WPF的SnapsToDevicePixels不工作?

如何解决《我的图像很模糊!为什么WPF的SnapsToDevicePixels不工作?》经验,为你挑选了5个好方法。

我在WPF applcation中使用了一些图像.

XAML:


但是,它们显得模糊:

死链接 - 模糊的WPF图像

这是一个放大的,并排的比较.原件在左侧:

死链接 - 模糊的WPF图像缩放

为什么这SnapsToDevicePixels="True"条线不能阻止这个问题呢?



1> Domokun..:

您可能需要考虑尝试在WPF4中使用的新属性.离开RenderOptions.BitmapScalingMode高质量或者只是不申报.

NearestNeighbor为我工作,除了它在放大应用程序时导致锯齿状位图.它似乎也没有解决任何图标以奇怪的方式进行大小调整的故障.

在你的根元素(即你的主窗口)上添加这个属性:UseLayoutRounding="True".

以前只在Silverlight中可用的属性现在修复了所有Bitmap大小调整问题.:)


**FINALLY !!**默认情况下应设置UseLayoutRounding.图像显示就像原始文件一样,甚至某些地方的文本(比如ContextMenus,至少对我来说)显示比以前更清晰.谢谢,Domokun!
UseLayoutRendering ="True"是我使用的 - 这非常适合解决我模糊的图像.谢谢!
有关此新属性的更多信息,请访问:http://blogs.msdn.com/text/archive/2009/08/27/layout-rounding.aspx
我想我们这些仍然坚持.NET 3.5的人没有选择权?

2> Zack Peterso..:

而不是使用SnapsToDevicePixels,我改为使用RenderOptions.BitmapScalingMode,他们现在很好,很清爽!

XAML:


现在看来它是这样的:

清晰的WPF图像http://img13.imageshack.us/img13/9926/crispwpfimages.gif


@Zack Width ="20"并不意味着20像素.这意味着20/96英寸.如果您的操作系统配置为以96 DPI运行,那么它是20像素.现在你最近的邻居将如何看待一台好的显示器,例如160 DPI?当你以300 DPI打印时它会是什么样子?您不应该针对您的开发机器进行优化.

3> DK...:

给扎克彼得森+1

我正在使用.Net 3.5 sp1,它看起来像是大量模糊图像的最简单的解决方案.在适当的位置指定RenderOptions并不是什么大不了的事,但对于第三方组件,应用级资源中的样式是有意义的:

 

当AvalonDock开始渲染模糊图标时,工作得很好.



4> Omid B...:

UseLayoutRounding="True"在许多情况下使用根窗口,但我在使用WPF功能区控件时遇到问题.我的应用程序依赖于根据用户正在做什么而出现的Contextual选项卡,当我设置UseLayoutRoundingto时True,上下文选项卡不会显示,而RibbonButton的图像也不会显示.此外,应用程序冻结了几秒钟,CPU风扇开始唱歌.

RenderOptions.BitmapScalingMode="NearestNeighbor"在我的图像上使用更正了图像渲染问题(模糊和裁剪图像),并与功能区上下文选项卡使用完全兼容.



5> 小智..:

RenderOptions.BitmapScalingMode ="NearestNeighbor"在大多数情况下运行良好.然而,偶尔你会得到图形故障(在我的情况下,5个图像中有4个显示正常,但第五个在右边缘有轻微的扭曲).我修正了我将Image控件的右边距增加1.

如果仍然无法修复它,请尝试EugeneZ提到的上面的Bitmap类控件.它是Image控件的替代品,到目前为止它对我来说效果很好.见http://blogs.msdn.com/dwayneneed/archive/2007/10/05/blurry-bitmaps.aspx

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有