mck*_*mey 5 wpf .net-4.0 antialiasing dithering
我正在使用WPF作为图像大小调整管道,它在.NET v3.5下运行良好.我刚刚将项目升级到目标v4.0,现在我所有调整大小的图像都有很多别名.没有任何图像管道代码已更改.
在v3.5和v4.0之间是否更改了默认WPF设置?
如何在WPF中控制调整大小的位图图像的抖动?
我使用BitmapImage,DrawingVisual,DrawingContext,RenderTargetBitmap,BitmapEncoder,和BitmapFrame,但我没有看到相关的抖动的任何属性.GDI +有很多设置,所以我猜我错过了什么.
更新:我看到的所有解决方案似乎都假设是Window对象或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; }
}
}
Run Code Online (Sandbox Code Playgroud)
如果其他人知道更好的设置方法,我会很高兴听到它。
看来这可行:
RenderOptions.SetBitmapScalingMode(myDrawingVisual, BitmapScalingMode.HighQuality);
Run Code Online (Sandbox Code Playgroud)
...但事实并非如此。显然,位于 XAML 窗口运行时之外必然意味着它无法设置适当的值。