我正在使用WPF进行图像调整管道的图像,该图像在.NET v3.5下运行精美。我刚刚将项目升级到目标v4.0,现在我所有的调整大小图像都完全被别名。图像管道代码没有更改。

  1. 默认的WPF设置是否在v3.5和v4.0之间更改?

  2. 如何控制WPF中调整大小图像的抖动?

我在用着 BitmapImage, DrawingVisual, DrawingContext, RenderTargetBitmap, BitmapEncoder, , 和 BitmapFrame 但是我没有看到与抖动有关的任何属性。 GDI+有很多设置,所以我猜我缺少一些东西。

更新: 看来我看到的所有解决方案都假设一个窗口对象或XAML环境。这在没有UI的Windows服务中运行。我需要一种方法来编程影响此设置。

我专门从GDI+切换到WPF,因为GDI+在诸如服务和Web应用程序之类的长期运行过程中具有内存泄漏。

有帮助吗?

解决方案

我唯一能够影响设置的唯一方法 BitmapScalingMode 是从 DrawingVisual 类并通过其受保护的登录器设置它:

// exposes BitmapScalingMode (also works for other protected properties)
public class MyDrawingVisual : DrawingVisual
{
    public BitmapScalingMode BitmapScalingMode
    {
        get { return this.VisualBitmapScalingMode; }
        set { this.VisualBitmapScalingMode = value; }
    }
}

如果其他人知道一种更好的设定方法,我会很高兴听到这一点。

看来这会起作用:

RenderOptions.SetBitmapScalingMode(myDrawingVisual, BitmapScalingMode.HighQuality);

...但不是。显然,在XAML窗口运行时之外必须意味着它无法设置适当的值。

其他提示

默认的bitmapscalingmode在3.0中是fand,但在4.0中,它是双线性的。您可以更改默认值几种不同的方式。一对夫妇 在这里描述.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top