5

我正在将 WPF 用于图像大小调整管道,该管道在 .NET v3.5 下运行良好。我刚刚将项目升级到 v4.0,现在我所有调整大小的图像都严重混叠。图像管道代码均未更改。

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

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

我正在使用BitmapImage, DrawingVisual, DrawingContext, RenderTargetBitmap, BitmapEncoder,BitmapFrame但我没有看到任何与抖动相关的属性。GDI+ 有很多设置,所以我猜我遗漏了一些东西。

更新:似乎我见过的所有解决方案都假设一个 Window 对象或 XAML 环境。这在没有 UI 的 Windows 服务中运行。我需要一种以编程方式影响此设置的方法。

我专门从 GDI+ 切换到 WPF,因为 GDI+ 在服务和 Web 应用程序等长时间运行的进程中存在内存泄漏。

4

2 回答 2

3

我能够影响设置的唯一方法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 窗口运行时之外必须意味着它无法设置适当的值。

于 2010-06-04T00:17:24.503 回答
0

默认的 BitmapScalingMode 在 3.0 中是 Fant,但在 4.0 中现在是 BiLinear。您可以通过几种不同的方式更改默认值。这里描述的一对。

于 2010-06-03T20:29:14.637 回答