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

Ian*_*ith 5 scaling gdi bitmap direct2d

我出于性能原因试图将应用程序从GDI +移到Direct2D.

我以前在HALFTONE模式下使用StretchBlt(),这会产生很好但很慢的结果.

现在我使用RenderTarget-> DrawBitmap()绘制Direct2D,但它只有两种模式,LINEAR和NEAREST_NEIGHBOR,两者都不是很好.LINEAR更好,但仍会产生可怕的文物.

Direct2D有任何高质量的缩放选项吗?如果没有,我最好坚持使用GDI还是有其他选择?这是一个在带有各种Win32控件的窗口中运行的Windows应用程序.

Ken*_*err 8

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

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

  • 或者,您也可以使用Windows Imaging Component来缩放图像.WIC在Direct2D 1.0和1.1上运行得非常好,并且支持Windows XP.http://msdn.com/library/ee719810.aspx (3认同)