ID2D1Factory2 接口是 Direct2D 库中的一个接口,用于表示 Direct2D 工厂。该接口在 D2d1_2.h 头文件中声明。

以下是 ID2D1Factory2 接口的简要定义:
DECLARE_INTERFACE_(ID2D1Factory2, ID2D1Factory1)
{
    STDMETHOD(CreateDevice)(
        _In_ IDXGIDevice *dxgiDevice,
        _Outptr_ ID2D1Device1 **d2dDevice1
        ) PURE;

    STDMETHOD(CreateStrokeStyle)(
        _In_ CONST D2D1_STROKE_STYLE_PROPERTIES1 *strokeStyleProperties,
        _In_reads_opt_(dashesCount) CONST FLOAT *dashes,
        UINT32 dashesCount,
        _Outptr_ ID2D1StrokeStyle1 **strokeStyle
        ) PURE;

    STDMETHOD(CreatePathGeometry)(
        _Outptr_ ID2D1PathGeometry1 **pathGeometry
        ) PURE;

    STDMETHOD(CreateDrawingStateBlock)(
        _In_opt_ CONST D2D1_DRAWING_STATE_DESCRIPTION1 *drawingStateDescription,
        _In_opt_ IDWriteRenderingParams *textRenderingParams,
        _Outptr_ ID2D1DrawingStateBlock1 **drawingStateBlock
        ) PURE;

    using ID2D1Factory1::CreateWicBitmapRenderTarget;

    STDMETHOD(CreateWicBitmapRenderTarget)(
        _In_ IWICBitmap *target,
        _In_opt_ CONST D2D1_RENDER_TARGET_PROPERTIES1 *renderTargetProperties,
        _Outptr_ ID2D1RenderTarget **renderTarget
        ) PURE;

    STDMETHOD(CreateHwndRenderTarget)(
        _In_ CONST D2D1_RENDER_TARGET_PROPERTIES1 *renderTargetProperties,
        _In_ CONST D2D1_HWND_RENDER_TARGET_PROPERTIES *hwndRenderTargetProperties,
        _Outptr_ ID2D1HwndRenderTarget **hwndRenderTarget
        ) PURE;

    STDMETHOD(CreateDxgiSurfaceRenderTarget)(
        _In_ IDXGISurface *dxgiSurface,
        _In_ CONST D2D1_RENDER_TARGET_PROPERTIES1 *renderTargetProperties,
        _Outptr_ ID2D1RenderTarget **renderTarget
        ) PURE;

    STDMETHOD(CreateDCRenderTarget)(
        _In_ CONST D2D1_RENDER_TARGET_PROPERTIES1 *renderTargetProperties,
        _Outptr_ ID2D1DCRenderTarget **dcRenderTarget
        ) PURE;

    STDMETHOD(CreateDeviceContext)(
        D2D1_DEVICE_CONTEXT_OPTIONS options,
        _Outptr_ ID2D1DeviceContext1 **deviceContext1
        ) PURE;

    STDMETHOD(CreatePrintControl)(
        _In_ IWICImagingFactory * wicFactory,
        _In_ IPrintDocumentPackageTarget * target,
        _Outptr_ IPrintControl ** printControl
        ) PURE;
};

这个接口是 ID2D1Factory1 的扩展,增加了一些新的方法。主要的新方法包括:

  •  CreateDevice: 创建一个 Direct2D 设备对象。可以传递一个与 Direct3D 设备关联的 IDXGIDevice 接口。


  •  CreateStrokeStyle: 创建一个描边样式对象。这个方法允许创建具有更多属性的描边样式,与 ID2D1StrokeStyle 不同之处在于支持更多的描边特性。


  •  CreatePathGeometry: 创建一个路径几何图形对象。


  •  CreateDrawingStateBlock: 创建一个绘制状态块对象,用于保存和恢复绘制状态。


  •  CreateWicBitmapRenderTarget: 创建一个与 WIC (Windows Imaging Component) 位图相关联的渲染目标。


  •  CreateHwndRenderTarget: 创建一个与 HWND 相关联的渲染目标。


  •  CreateDxgiSurfaceRenderTarget: 创建一个与 DXGI 表面相关联的渲染目标。


  •  CreateDCRenderTarget: 创建一个与设备上下文相关联的渲染目标。


  •  CreateDeviceContext: 创建一个 Direct2D 设备上下文。


  •  CreatePrintControl: 创建一个与打印相关的控制对象。


这些方法提供了创建各种 Direct2D 对象的途径,包括设备、描边样式、路径几何图形、绘制状态块以及多种类型的渲染目标。


转载请注明出处:http://www.zyzy.cn/article/detail/25329/Win32 API/D2d1_2.h/ID2D1Factory2