c# W.P.F. 图像显示 tiff (只显示1页) 模糊

15 浏览
0 Comments

c# W.P.F. 图像显示 tiff (只显示1页) 模糊

我在我的WPF应用程序中使用了一些图片。\nXAML:\n


\n但是,它们看起来模糊。\n为什么那个SnapsToDevicePixels=\"True\"行不能解决这个问题?

0
0 Comments

问题原因:在使用C# W.P.F.展示tiff格式的图片时,只显示第一页模糊。

解决方法:通过设置RenderOptions.BitmapScalingMode属性为NearestNeighbor来解决模糊的问题。可以在代码中直接指定这个属性,也可以在应用程序级别的资源中使用样式设置。

以下是设置样式的代码示例:


这个方法能够解决使用第三方组件(比如AvalonDock)时出现模糊图标的问题。

0
0 Comments

问题出现的原因:在WPF中,当显示tiff格式的图像时,如果不设置合适的渲染选项,图像可能会模糊。

解决方法:使用RenderOptions.BitmapScalingMode属性来设置渲染选项,将其值设置为NearestNeighbor,这样可以使图像显示清晰。

文章内容如下:

在WPF中显示tiff格式的图像时,如果不设置合适的渲染选项,图像可能会变得模糊。通过使用RenderOptions.BitmapScalingMode属性,并将其值设置为NearestNeighbor,可以解决这个问题。下面是一个示例代码:


此外,如果图像的大小与Image标记中指定的大小完全相同,则无需进行缩放,图像将以清晰的方式呈现。但是需要注意的是,这种方法在不同DPI设置下的效果可能会有所不同。

需要注意的是,NearestNeighbor不是RenderOptions.BitmapScalingMode的一个合法值,这可能是因为不同的机器和设置可能会导致该选项不可用。

另外,Width="20"并不意味着20个像素,而是表示20/96英寸。如果操作系统的DPI设置为96,则相当于20个像素。但是,如果在DPI为160的高分辨率显示器上显示图像,以及在300 DPI的打印机上打印图像,则图像的最佳显示效果可能会有所不同。因此,不应该只优化开发机器上的显示效果。

为了解决WPF中显示tiff图像模糊的问题,可以使用RenderOptions.BitmapScalingMode属性,并将其值设置为NearestNeighbor,以获得清晰的图像显示效果。同时需要注意不同DPI设置下的显示效果可能会有所不同。

0
0 Comments

WPF4版本中新增了一个属性UseLayoutRounding,可以解决在显示图像时出现模糊问题。使用RenderOptions.BitmapScalingMode属性设置为HighQuality或者不声明该属性,以及使用NearestNeighbor方法都不能解决图像放大时出现的锯齿问题和图标尺寸异常问题。在根元素(主窗口)上添加UseLayoutRounding="True"属性可以解决图像模糊问题。该属性最初只在Silverlight中可用,现在已经修复了所有位图尺寸问题。有关这个新属性的更多信息请参考blogs.msdn.com/text/archive/2009/08/27/layout-rounding.aspx。在使用UseLayoutRounding="True"属性后,图像显示效果与原始图像一致,甚至一些地方的文本显示效果更清晰。然而,在.NET 3.5版本中无法使用该属性。某些情况下UseLayoutRounding应该是默认设置的,而不是需要手动设置的选项。还某些情况下在某些情况下,使用UseLayoutRounding="True"属性会导致控件如ComboBox、Button在界面上显示不完整。还有人指出,尽管使用了UseLayoutRounding="True"属性,但在其他场景下,即使将图像渲染质量设置为HighQuality并关闭了抗锯齿,WPF仍然存在图像拉伸问题。但至少对于非拉伸的图像,该属性解决了问题(其实一开始就不应该出现这个问题)。

0