图像调整WPF V4中的混叠大小,但不在v3.5中。
-
24-10-2019 - |
题
我正在使用WPF进行图像调整管道的图像,该图像在.NET v3.5下运行精美。我刚刚将项目升级到目标v4.0,现在我所有的调整大小图像都完全被别名。图像管道代码没有更改。
默认的WPF设置是否在v3.5和v4.0之间更改?
如何控制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中,它是双线性的。您可以更改默认值几种不同的方式。一对夫妇 在这里描述.
不隶属于 StackOverflow