【问题标题】:WPF Image, how to remove blur?WPF Image,如何去除模糊?
【发布时间】:2011-02-02 05:10:48
【问题描述】:

我有

我需要

XAML:

<Image Height="500"
       MouseLeftButtonDown="image_MouseLeftButtonDown"
       MouseRightButtonDown="image_MouseRightButtonDown"
       Name="image"
       Stretch="Fill"
       Width="500" />`

C#:

  wbmap = new WriteableBitmap(50, 50, 500, 500, PixelFormats.Indexed8, palette);
  wbmap.WritePixels(new Int32Rect(0, 0, wbmap.PixelWidth, wbmap.PixelHeight), pixels, wbmap.PixelWidth * wbmap.Format.BitsPerPixel / 8, 0);
  image.Source = wbmap;

【问题讨论】:

  • 请提供更多细节!你是如何在第一张图片中获得模糊的?这是在 XAML 中生成的吗?

标签: wpf image-processing wpf-controls


【解决方案1】:

正如 tkerwin 所说,将 XAML 图像代码中的 BitmapScalingMode 更改为 NearestNeighbor

RenderOptions.BitmapScalingMode="NearestNeighbor"

【讨论】:

  • 我尝试使用上面的代码。它工作正常!但是我在 MSDN 中找不到描述 Image.RenderOptions 的位置,页面 msdn.microsoft.com/en-us/library/… 上没有信息。文档在哪里可以找到?谢谢
  • @sergdev - RenderOptions 类可以在 here 找到
  • 我明白了,我看到了那个页面,谢谢。我试图澄清: Image 和 RenderOptions 类之间的关系在哪里描述?我以为 RenderOptions 是 Image 的成员,但事实并非如此。只是无法意识到如何从 MSDN 中理解这一点。
  • @sergdev - 本身没有关系,RenderOptions 是一个静态类(完全独立)。
  • @sergdev 它看起来“.BitmapScalingMode”是一个 DependencyProperty——因此它可以分配给任何 DependencyObject。 (你可以将它分配给各种没有任何意义的东西——例如矩形。——对于无法识别该属性的对象,它只会被忽略。)
【解决方案2】:

也许您需要将位图缩放模式更改为最近邻。

RenderOptions.BitmapScalingMode="NearestNeighbor" 添加到您的图片标签中。

【讨论】:

  • 我不明白这个答案的代码示例如何被认为比接受的答案少。这有点乱:-/
【解决方案3】:

在没有抗锯齿的情况下提高分辨率/比例。

发生的事情是 WPF 正在缩放图像但“平均”像素,而不是进行更块状的缩放。

看到这篇文章:

Resize bitmap like in MS Paint

【讨论】:

  • 我在 500x500 图像控制中有 50x50 分辨率的图像。我想要没有抗锯齿的图像。我怎样才能得到它?
猜你喜欢
  • 1970-01-01
  • 2017-04-22
  • 2021-08-18
  • 2022-10-24
  • 1970-01-01
  • 2021-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多