如何在Direct2D中进行高质量位图缩放?

5

出于性能考虑,我试图将一个应用程序从GDI +移动到Direct2D。

以前我在HALFTONE模式下使用StretchBlt()获得了很好但速度较慢的结果。

现在我正在使用RenderTarget->DrawBitmap()在Direct2D中进行绘制,但它仅有两种模式,即LINEAR和NEAREST_NEIGHBOR,两种都不是很好。LINEAR更好,但仍会产生可怕的伪影。

Direct2D是否具有高品质的缩放选项?如果没有,我最好坚持使用GDI还是有其他选择?这是在具有各种Win32控件的窗口中运行的Windows应用程序。

1个回答

8

Direct2D 1.0仅支持线性和最近邻插值。Direct2D 1.1增加了四种额外的插值算法。这些可通过新设备上下文渲染目标(ID2D1DeviceContext)及其DrawBitmapDrawImage方法获得。请查看D2D1_INTERPOLATION_MODE枚举:

http://msdn.com/library/hh447004.aspx


如果我没记错的话,1.1 版本是为 Windows 8 设计的,Windows 7 可以通过补丁支持,但不支持 Vista?所以,如果我想要支持广泛的系统,那我就没戏了。 - Ian Smith
Direct2D 1.1可在Windows 7和8以及Windows Phone 8(非官方)上使用。不幸的是,如果您需要支持Windows Vista,则只能使用Direct2D 1.0。 - Kenny Kerr
3
另外,您还可以使用Windows图像组件来缩放图像。WIC与Direct2D 1.0和1.1都非常兼容,并支持Windows XP操作系统。http://msdn.com/library/ee719810.aspx - Kenny Kerr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接