Win32 API 日本語リファレンス
ホームGraphics.Direct2D › ID2D1RenderTarget

ID2D1RenderTarget

COM
IID2cd90694-12e2-11dc-9fed-001143a055f9継承元ID2D1Resource自前メソッド開始 vtbl4

公式ドキュメント

描画コマンドを受け取ることができるオブジェクトを表します。ID2D1RenderTarget を継承するインターフェイスは、受け取った描画コマンドをそれぞれ異なる方法でレンダリングします。

解説(Remarks)

アプリケーションでは、レンダーターゲットを一度だけ作成し、アプリケーションの実行中、またはレンダーターゲットの EndDraw メソッドが D2DERR_RECREATE_TARGET エラーを返すまで保持するようにしてください。このエラーを受け取った場合は、レンダーターゲット(およびそれが作成したすべてのリソース)を再作成する必要があります。

メソッド 53

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 4 HRESULT CreateBitmap(D2D_SIZE_U size, void* srcData, DWORD pitch, D2D1_BITMAP_PROPERTIES* bitmapProperties, ID2D1Bitmap** bitmap)
sizeD2D_SIZE_Uin作成するビットマップのピクセル寸法(幅・高さ)。
srcDatavoid*inoptional初期化用ピクセルデータへのポインタ。NULL可で未初期化のまま作成する。
pitchDWORDinsrcDataの1行あたりのバイト数(ストライド)。
bitmapPropertiesD2D1_BITMAP_PROPERTIES*inピクセル形式とDPIを指定するビットマップ属性へのポインタ。
bitmapID2D1Bitmap**out作成されたビットマップを受け取る出力ポインタ。
vtbl 5 HRESULT CreateBitmapFromWicBitmap(IWICBitmapSource* wicBitmapSource, D2D1_BITMAP_PROPERTIES* bitmapProperties, ID2D1Bitmap** bitmap)
wicBitmapSourceIWICBitmapSource*in変換元となるWICビットマップソースへのポインタ。
bitmapPropertiesD2D1_BITMAP_PROPERTIES*inoptionalピクセル形式とDPIを指定するビットマップ属性。NULL可でソースから推定する。
bitmapID2D1Bitmap**out作成されたビットマップを受け取る出力ポインタ。
vtbl 6 HRESULT CreateSharedBitmap(GUID* riid, void* data, D2D1_BITMAP_PROPERTIES* bitmapProperties, ID2D1Bitmap** bitmap)

データを別のリソースと共有する ID2D1Bitmap を作成します。

riidGUID*inソースデータを提供するオブジェクトのインターフェイス ID。
datavoid*inout新しい ID2D1Bitmap と共有するデータを格納する ID2D1BitmapIDXGISurface、または IWICBitmapLock。詳細については、「解説」セクションを参照してください。
bitmapPropertiesD2D1_BITMAP_PROPERTIES*inoptional作成するビットマップのピクセルフォーマットと DPI。ピクセルフォーマットの DXGI_FORMAT 部分は dataDXGI_FORMAT と一致している必要があり、一致しない場合はメソッドが失敗します。ただし、アルファモードは一致している必要はありません。不一致を防ぐには、NULL または D2D1::PixelFormat ヘルパー関数から取得した値を渡すことができます。DPI 設定は data のものと一致している必要はありません。dpiXdpiY の両方が 0.0f の場合、レンダーターゲットの DPI が使用されます。
bitmapID2D1Bitmap**outこのメソッドが返るときに、新しいビットマップへのポインターのアドレスを格納します。このパラメーターは初期化せずに渡します。

戻り値

Type: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は、HRESULT エラーコードを返します。

解説(Remarks)

CreateSharedBitmap メソッドは、ビットマップデータを効率的に再利用するのに便利であり、また Direct3D との相互運用性を提供するためにも使用できます。

ID2D1Bitmap の共有

リソース互換性のあるレンダーターゲットによって作成された ID2D1Bitmap を渡すことで、そのレンダーターゲットとビットマップを共有できます。元の ID2D1Bitmap と、このメソッドによって作成される新しい ID2D1Bitmap の両方が、同じビットマップデータを指すようになります。レンダーターゲットのリソースを共有できる条件の詳細については、リソースの概要の「レンダーターゲットリソースの共有」セクションを参照してください。

このメソッドを使用して、既存のビットマップのデータを再解釈し、新しい DPI やアルファモードを指定することもできます。たとえば、ビットマップアトラスの場合、ID2D1Bitmap に複数のサブイメージが含まれ、それぞれ異なる D2D1_ALPHA_MODE(D2D1_ALPHA_MODE_PREMULTIPLIED または D2D1_ALPHA_MODE_IGNORE)でレンダリングする必要がある場合があります。CreateSharedBitmap メソッドを使用すれば、ビットマップの別のコピーをメモリに読み込むことなく、目的のアルファモードでビットマップを再解釈できます。

IDXGISurface の共有

DXGI サーフェスレンダーターゲット(CreateDxgiSurfaceRenderTarget メソッドによって作成された ID2D1RenderTarget オブジェクト)を使用する場合、IDXGISurface サーフェスを CreateSharedBitmap メソッドに渡すことで、Direct3D とビデオメモリを共有し、Direct3D のコンテンツを ID2D1Bitmap として操作できます。リソースの概要で説明されているとおり、レンダーターゲットと IDXGISurface は同じ Direct3D デバイスを使用している必要があります。

また、IDXGISurface は、サポートされるピクセルフォーマットとアルファモードで説明されているサポート対象のピクセルフォーマットとアルファモードのいずれかを使用している必要があることに注意してください。

Direct3D との相互運用性の詳細については、Direct2D と Direct3D の相互運用性の概要を参照してください。

IWICBitmapLock の共有

IWICBitmapLock は、WIC ビットマップのコンテンツを格納し、同時アクセスから保護します。IWICBitmapLockCreateSharedBitmap メソッドに渡すことで、IWICBitmapLock にすでに格納されているビットマップデータを指す ID2D1Bitmap を作成できます。

IWICBitmapLockCreateSharedBitmap メソッドで使用するには、レンダーターゲットがソフトウェアレンダリングを使用している必要があります。レンダーターゲットにソフトウェアレンダリングを強制するには、レンダーターゲットの作成に使用する D2D1_RENDER_TARGET_PROPERTIES 構造体の type フィールドを D2D1_RENDER_TARGET_TYPE_SOFTWARE に設定します。既存のレンダーターゲットがソフトウェアレンダリングを使用しているかどうかを確認するには、IsSupported メソッドを使用します。

vtbl 7 HRESULT CreateBitmapBrush(ID2D1Bitmap* bitmap, D2D1_BITMAP_BRUSH_PROPERTIES* bitmapBrushProperties, D2D1_BRUSH_PROPERTIES* brushProperties, ID2D1BitmapBrush** bitmapBrush)
bitmapID2D1Bitmap*inoptionalブラシの内容となるビットマップへのポインタ。
bitmapBrushPropertiesD2D1_BITMAP_BRUSH_PROPERTIES*inoptional拡張モードと補間モードを指定するブラシ属性。NULL可で既定値。
brushPropertiesD2D1_BRUSH_PROPERTIES*inoptional不透明度と変換を指定する共通ブラシ属性。NULL可で既定値。
bitmapBrushID2D1BitmapBrush**out作成されたビットマップブラシを受け取る出力ポインタ。
vtbl 8 HRESULT CreateSolidColorBrush(D2D1_COLOR_F* color, D2D1_BRUSH_PROPERTIES* brushProperties, ID2D1SolidColorBrush** solidColorBrush)
colorD2D1_COLOR_F*inブラシの単色を指定するRGBA色構造体へのポインタ。
brushPropertiesD2D1_BRUSH_PROPERTIES*inoptional不透明度と変換を指定する共通ブラシ属性。NULL可で既定値。
solidColorBrushID2D1SolidColorBrush**out作成された単色ブラシを受け取る出力ポインタ。
vtbl 9 HRESULT CreateGradientStopCollection(D2D1_GRADIENT_STOP* gradientStops, DWORD gradientStopsCount, D2D1_GAMMA colorInterpolationGamma, D2D1_EXTEND_MODE extendMode, ID2D1GradientStopCollection** gradientStopCollection)
gradientStopsD2D1_GRADIENT_STOP*in位置と色を持つグラデーションストップの配列ポインタ。
gradientStopsCountDWORDingradientStops配列の要素数。2以上を指定する。
colorInterpolationGammaD2D1_GAMMAin色補間に用いるガンマ空間を指定する列挙値。
extendModeD2D1_EXTEND_MODEinグラデーション範囲外の拡張方法を指定する列挙値。
gradientStopCollectionID2D1GradientStopCollection**out作成されたグラデーションストップ集合を受け取る出力ポインタ。
vtbl 10 HRESULT CreateLinearGradientBrush(D2D1_LINEAR_GRADIENT_BRUSH_PROPERTIES* linearGradientBrushProperties, D2D1_BRUSH_PROPERTIES* brushProperties, ID2D1GradientStopCollection* gradientStopCollection, ID2D1LinearGradientBrush** linearGradientBrush)
linearGradientBrushPropertiesD2D1_LINEAR_GRADIENT_BRUSH_PROPERTIES*in始点と終点を指定する線形グラデーション固有属性へのポインタ。
brushPropertiesD2D1_BRUSH_PROPERTIES*inoptional不透明度と変換を指定する共通ブラシ属性。NULL可で既定値。
gradientStopCollectionID2D1GradientStopCollection*inブラシに適用するグラデーションストップ集合へのポインタ。
linearGradientBrushID2D1LinearGradientBrush**out作成された線形グラデーションブラシを受け取る出力ポインタ。
vtbl 11 HRESULT CreateRadialGradientBrush(D2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES* radialGradientBrushProperties, D2D1_BRUSH_PROPERTIES* brushProperties, ID2D1GradientStopCollection* gradientStopCollection, ID2D1RadialGradientBrush** radialGradientBrush)
radialGradientBrushPropertiesD2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES*in中心・原点オフセット・半径を指定する放射グラデーション固有属性へのポインタ。
brushPropertiesD2D1_BRUSH_PROPERTIES*inoptional不透明度と変換を指定する共通ブラシ属性。NULL可で既定値。
gradientStopCollectionID2D1GradientStopCollection*inブラシに適用するグラデーションストップ集合へのポインタ。
radialGradientBrushID2D1RadialGradientBrush**out作成された放射グラデーションブラシを受け取る出力ポインタ。
vtbl 12 HRESULT CreateCompatibleRenderTarget(D2D_SIZE_F* desiredSize, D2D_SIZE_U* desiredPixelSize, D2D1_PIXEL_FORMAT* desiredFormat, D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS options, ID2D1BitmapRenderTarget** bitmapRenderTarget)
desiredSizeD2D_SIZE_F*inoptionalDIP単位での希望サイズ。NULL可で元ターゲットと同寸。
desiredPixelSizeD2D_SIZE_U*inoptionalピクセル単位での希望サイズ。NULL可で自動算出する。
desiredFormatD2D1_PIXEL_FORMAT*inoptional希望するピクセル形式。NULL可で元ターゲットに合わせる。
optionsD2D1_COMPATIBLE_RENDER_TARGET_OPTIONSinGDI互換などの作成オプションを指定するフラグ列挙値。
bitmapRenderTargetID2D1BitmapRenderTarget**out作成された互換ビットマップレンダーターゲットを受け取る出力ポインタ。
vtbl 13 HRESULT CreateLayer(D2D_SIZE_F* size, ID2D1Layer** layer)
sizeD2D_SIZE_F*inoptionalレイヤーの初期サイズ。NULL可でサイズ自動調整を意味する。
layerID2D1Layer**out作成されたレイヤーリソースを受け取る出力ポインタ。
vtbl 14 HRESULT CreateMesh(ID2D1Mesh** mesh)

三角形を使用して形状を記述するメッシュを作成します。

meshID2D1Mesh**outこのメソッドが返るときに、新しいメッシュへのポインターへのポインターを格納します。

戻り値

Type: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は、HRESULT エラーコードを返します。

解説(Remarks)

メッシュにデータを設定するには、その Open メソッドを使用して ID2D1TessellationSink を取得します。メッシュを描画するには、レンダーターゲットの FillMesh メソッドを使用します。

vtbl 15 void DrawLine(D2D_POINT_2F point0, D2D_POINT_2F point1, ID2D1Brush* brush, FLOAT strokeWidth, ID2D1StrokeStyle* strokeStyle)

指定したストロークスタイルを使用して、指定した点の間に線を描画します。

point0D2D_POINT_2Fin線の始点(デバイス非依存ピクセル単位)。
point1D2D_POINT_2Fin線の終点(デバイス非依存ピクセル単位)。
brushID2D1Brush*in線のストロークを描画するために使用するブラシ。
strokeWidthFLOATinストロークの幅(デバイス非依存ピクセル単位)。値は 0.0f 以上でなければなりません。このパラメーターを指定しない場合、既定値は 1.0f です。ストロークは線の中央に配置されます。
strokeStyleID2D1StrokeStyle*inoptional描画するストロークのスタイル。実線を描画する場合は NULL を指定します。

解説(Remarks)

このメソッドは失敗してもエラーコードを返しません。描画操作(DrawLine など)が失敗したかどうかを判断するには、ID2D1RenderTarget::EndDraw メソッドまたは ID2D1RenderTarget::Flush メソッドが返す結果を確認してください。

次の例では、DrawLine メソッドを使用して、レンダーターゲットの幅と高さいっぱいに広がるグリッドを作成します。幅と高さの情報は rtSize 変数によって提供されます。

        // Draw a grid background.
        int width = static_cast<int>(rtSize.width);
        int height = static_cast<int>(rtSize.height);

        for (int x = 0; x < width; x += 10)
        {
            m_pRenderTarget->DrawLine(
                D2D1::Point2F(static_cast<FLOAT>(x), 0.0f),
                D2D1::Point2F(static_cast<FLOAT>(x), rtSize.height),
                m_pLightSlateGrayBrush,
                0.5f
                );
        }

        for (int y = 0; y < height; y += 10)
        {
            m_pRenderTarget->DrawLine(
                D2D1::Point2F(0.0f, static_cast<FLOAT>(y)),
                D2D1::Point2F(rtSize.width, static_cast<FLOAT>(y)),
                m_pLightSlateGrayBrush,
                0.5f
                );
        }
vtbl 16 void DrawRectangle(D2D_RECT_F* rect, ID2D1Brush* brush, FLOAT strokeWidth, ID2D1StrokeStyle* strokeStyle)
rectD2D_RECT_F*in描画する矩形の座標を指定するポインタ。
brushID2D1Brush*in輪郭線の描画に用いるブラシへのポインタ。
strokeWidthFLOATin輪郭線の太さ。デバイス非依存ピクセル単位の浮動小数。
strokeStyleID2D1StrokeStyle*inoptional線のスタイル。NULL可で既定の実線を用いる。
vtbl 17 void FillRectangle(D2D_RECT_F* rect, ID2D1Brush* brush)
rectD2D_RECT_F*in塗りつぶす矩形の座標を指定するポインタ。
brushID2D1Brush*in塗りつぶしに用いるブラシへのポインタ。
vtbl 18 void DrawRoundedRectangle(D2D1_ROUNDED_RECT* roundedRect, ID2D1Brush* brush, FLOAT strokeWidth, ID2D1StrokeStyle* strokeStyle)
roundedRectD2D1_ROUNDED_RECT*in描画する角丸矩形の定義へのポインタ。
brushID2D1Brush*in輪郭線の描画に用いるブラシへのポインタ。
strokeWidthFLOATin輪郭線の太さ。デバイス非依存ピクセル単位の浮動小数。
strokeStyleID2D1StrokeStyle*inoptional線のスタイル。NULL可で既定の実線を用いる。
vtbl 19 void FillRoundedRectangle(D2D1_ROUNDED_RECT* roundedRect, ID2D1Brush* brush)
roundedRectD2D1_ROUNDED_RECT*in塗りつぶす角丸矩形の定義へのポインタ。
brushID2D1Brush*in塗りつぶしに用いるブラシへのポインタ。
vtbl 20 void DrawEllipse(D2D1_ELLIPSE* ellipse, ID2D1Brush* brush, FLOAT strokeWidth, ID2D1StrokeStyle* strokeStyle)
ellipseD2D1_ELLIPSE*in描画する楕円の定義へのポインタ。
brushID2D1Brush*in輪郭線の描画に用いるブラシへのポインタ。
strokeWidthFLOATin輪郭線の太さ。デバイス非依存ピクセル単位の浮動小数。
strokeStyleID2D1StrokeStyle*inoptional線のスタイル。NULL可で既定の実線を用いる。
vtbl 21 void FillEllipse(D2D1_ELLIPSE* ellipse, ID2D1Brush* brush)
ellipseD2D1_ELLIPSE*in塗りつぶす楕円の定義へのポインタ。
brushID2D1Brush*in塗りつぶしに用いるブラシへのポインタ。
vtbl 22 void DrawGeometry(ID2D1Geometry* geometry, ID2D1Brush* brush, FLOAT strokeWidth, ID2D1StrokeStyle* strokeStyle)

指定したストロークスタイルを使用して、指定したジオメトリの輪郭を描画します。

geometryID2D1Geometry*in描画するジオメトリ。
brushID2D1Brush*inジオメトリのストロークを描画するために使用するブラシ。
strokeWidthFLOATinストロークの幅(デバイス非依存ピクセル単位)。値は 0.0f 以上でなければなりません。このパラメーターを指定しない場合、既定値は 1.0f です。ストロークは線の中央に配置されます。
strokeStyleID2D1StrokeStyle*inoptionalジオメトリの輪郭に適用するストロークのスタイル。実線のストロークを描画する場合は NULL を指定します。

解説(Remarks)

このメソッドは失敗してもエラーコードを返しません。描画操作(DrawGeometry など)が失敗したかどうかを判断するには、ID2D1RenderTarget::EndDraw メソッドまたは ID2D1RenderTarget::Flush メソッドが返す結果を確認してください。

例については、複雑な図形を描画して塗りつぶす方法を参照してください。

vtbl 23 void FillGeometry(ID2D1Geometry* geometry, ID2D1Brush* brush, ID2D1Brush* opacityBrush)

指定したジオメトリの内部を塗りつぶします。

geometryID2D1Geometry*in塗りつぶすジオメトリ。
brushID2D1Brush*inジオメトリの内部を塗りつぶすために使用するブラシ。
opacityBrushID2D1Brush*inoptionalジオメトリに適用する不透明度マスク。不透明度マスクを使用しない場合は NULL を指定します。不透明度マスク(opacityBrush パラメーター)を指定する場合、brush は、x 方向および y 方向の拡張モードが D2D1_EXTEND_MODE_CLAMP に設定された ID2D1BitmapBrush でなければなりません。詳細については、「解説」セクションを参照してください。

解説(Remarks)

opacityBrush パラメーターが NULL でない場合、マッピングされた opacityBrush の各ピクセルのアルファ値を使用して、ジオメトリの対応する各ピクセルの最終的な不透明度が決定されます。この処理ではブラシ内の各色のアルファ値のみが使用され、その他の色情報はすべて無視されます。

ブラシで指定されたアルファ値は、ジオメトリが brush によって塗りつぶされた後に、ジオメトリのアルファ値と乗算されます。

このメソッドは失敗してもエラーコードを返しません。描画操作(FillGeometry など)が失敗したかどうかを判断するには、ID2D1RenderTarget::EndDraw メソッドまたは ID2D1RenderTarget::Flush メソッドが返す結果を確認してください。

例については、複雑な図形を描画して塗りつぶす方法を参照してください。

vtbl 24 void FillMesh(ID2D1Mesh* mesh, ID2D1Brush* brush)

指定したメッシュの内部を塗りつぶします。

meshID2D1Mesh*in塗りつぶすメッシュ。
brushID2D1Brush*inメッシュを塗りつぶすために使用するブラシ。

解説(Remarks)

FillMesh を呼び出すときは、レンダーターゲットの現在のアンチエイリアスモードが D2D1_ANTIALIAS_MODE_ALIASED でなければなりません。レンダーターゲットのアンチエイリアスモードを変更するには、SetAntialiasMode メソッドを使用します。

FillMesh は、ID2D1Mesh 内の三角形に特定の回り順(ワインディング順序)を必要としません。時計回りと反時計回りのどちらでも動作します。

このメソッドは失敗してもエラーコードを返しません。描画操作(FillMesh など)が失敗したかどうかを判断するには、ID2D1RenderTarget::EndDraw メソッドまたは ID2D1RenderTarget::Flush メソッドが返す結果を確認してください。

vtbl 25 void FillOpacityMask(ID2D1Bitmap* opacityMask, ID2D1Brush* brush, D2D1_OPACITY_MASK_CONTENT content, D2D_RECT_F* destinationRectangle, D2D_RECT_F* sourceRectangle)
opacityMaskID2D1Bitmap*inアルファ値をマスクとして用いるビットマップへのポインタ。
brushID2D1Brush*inマスクを通して塗る色を提供するブラシへのポインタ。
contentD2D1_OPACITY_MASK_CONTENTinマスク内容の種別(テキスト・グラフィック等)を指定する列挙値。
destinationRectangleD2D_RECT_F*inoptional描画先の矩形。NULL可で原点配置となる。
sourceRectangleD2D_RECT_F*inoptionalマスクから取り出す元矩形。NULL可で全体を用いる。
vtbl 26 void DrawBitmap(ID2D1Bitmap* bitmap, D2D_RECT_F* destinationRectangle, FLOAT opacity, D2D1_BITMAP_INTERPOLATION_MODE interpolationMode, D2D_RECT_F* sourceRectangle)
bitmapID2D1Bitmap*in描画するビットマップへのポインタ。
destinationRectangleD2D_RECT_F*inoptional描画先の矩形。NULL可でビットマップ実寸を原点に配置する。
opacityFLOATin描画時の不透明度。0.0(透明)~1.0(不透明)の浮動小数。
interpolationModeD2D1_BITMAP_INTERPOLATION_MODEin拡縮時の補間方式を指定する列挙値。
sourceRectangleD2D_RECT_F*inoptionalビットマップから取り出す元矩形。NULL可で全体を用いる。
vtbl 27 void DrawText(LPWSTR string, DWORD stringLength, IDWriteTextFormat* textFormat, D2D_RECT_F* layoutRect, ID2D1Brush* defaultFillBrush, D2D1_DRAW_TEXT_OPTIONS options, DWRITE_MEASURING_MODE measuringMode)
stringLPWSTRin描画する文字列へのワイド文字ポインタ。
stringLengthDWORDinstringの文字数。
textFormatIDWriteTextFormat*inフォントやサイズなどの書式を指定するテキスト書式へのポインタ。
layoutRectD2D_RECT_F*inテキストを配置するレイアウト矩形へのポインタ。
defaultFillBrushID2D1Brush*in文字の塗りつぶしに用いる既定ブラシへのポインタ。
optionsD2D1_DRAW_TEXT_OPTIONSinクリッピングやスナップ等の描画オプションを指定するフラグ列挙値。
measuringModeDWRITE_MEASURING_MODEinテキストの計測モードを指定するDirectWrite列挙値。
vtbl 28 void DrawTextLayout(D2D_POINT_2F origin, IDWriteTextLayout* textLayout, ID2D1Brush* defaultFillBrush, D2D1_DRAW_TEXT_OPTIONS options)

指定した IDWriteTextLayout オブジェクトが記述する書式設定済みテキストを描画します。

originD2D_POINT_2FintextLayout が記述するテキストの左上隅を描画する点(デバイス非依存ピクセル単位)。
textLayoutIDWriteTextLayout*in描画する書式設定済みテキスト。ID2D1Resource を継承しない描画エフェクトはすべて無視されます。ID2D1Resource を継承する描画エフェクトのうちブラシでないものが存在する場合、このメソッドは失敗し、レンダーターゲットはエラー状態になります。
defaultFillBrushID2D1Brush*intextLayout 内のテキストのうち、描画エフェクトとして(IDWriteTextLayout::SetDrawingEffect メソッドで指定して)ブラシがまだ関連付けられていないテキストを描画するために使用するブラシ。
optionsD2D1_DRAW_TEXT_OPTIONSinテキストをピクセル境界にスナップするかどうか、およびテキストをレイアウト矩形にクリップするかどうかを示す値。既定値は D2D1_DRAW_TEXT_OPTIONS_NONE で、これはテキストをピクセル境界にスナップし、レイアウト矩形にはクリップしないことを示します。

解説(Remarks)

同じテキストを繰り返し描画する場合、DrawTextLayout メソッドを使用する方が DrawText メソッドを使用するよりも効率的です。呼び出しのたびにテキストの書式設定やレイアウトの処理を行う必要がないためです。

このメソッドは失敗してもエラーコードを返しません。描画操作(DrawTextLayout など)が失敗したかどうかを判断するには、ID2D1RenderTarget::EndDraw メソッドまたは ID2D1RenderTarget::Flush メソッドが返す結果を確認してください。

vtbl 29 void DrawGlyphRun(D2D_POINT_2F baselineOrigin, DWRITE_GLYPH_RUN* glyphRun, ID2D1Brush* foregroundBrush, DWRITE_MEASURING_MODE measuringMode)

指定したグリフを描画します。

baselineOriginD2D_POINT_2Finグリフのベースラインの原点(デバイス非依存ピクセル単位)。
glyphRunDWRITE_GLYPH_RUN*inレンダリングするグリフ。
foregroundBrushID2D1Brush*in指定したグリフを描画するために使用するブラシ。
measuringModeDWRITE_MEASURING_MODEinテキストの書式設定時に、グリフメトリックをどのように使用してテキストを測定するかを示す値。既定値は DWRITE_MEASURING_MODE_NATURAL です。

解説(Remarks)

このメソッドは失敗してもエラーコードを返しません。描画操作(DrawGlyphRun など)が失敗したかどうかを判断するには、ID2D1RenderTarget::EndDraw メソッドまたは ID2D1RenderTarget::Flush メソッドが返す結果を確認してください。

vtbl 30 void SetTransform(D2D_MATRIX_3X2_F* transform)
transformD2D_MATRIX_3X2_F*inレンダーターゲットに適用する変換行列へのポインタ。
vtbl 31 void GetTransform(D2D_MATRIX_3X2_F* transform)

レンダーターゲットの現在の変換(トランスフォーム)を取得します。

transformD2D_MATRIX_3X2_F*outこの関数が返るときに、レンダーターゲットの現在の変換を格納します。このパラメーターは初期化せずに渡します。
vtbl 32 void SetAntialiasMode(D2D1_ANTIALIAS_MODE antialiasMode)

レンダーターゲットのアンチエイリアスモードを設定します。アンチエイリアスモードは、テキストおよびグリフの描画操作を除く、以降のすべての描画操作に適用されます。

antialiasModeD2D1_ANTIALIAS_MODEin以降の描画操作に対するアンチエイリアスモード。

解説(Remarks)

テキストおよびグリフの操作に対するアンチエイリアスモードを指定するには、SetTextAntialiasMode メソッドを使用します。

vtbl 33 D2D1_ANTIALIAS_MODE GetAntialiasMode()

テキスト以外の描画操作に対する現在のアンチエイリアスモードを取得します。

戻り値

Type: D2D1_ANTIALIAS_MODE

テキスト以外の描画操作に対する現在のアンチエイリアスモード。

vtbl 34 void SetTextAntialiasMode(D2D1_TEXT_ANTIALIAS_MODE textAntialiasMode)

以降のテキストおよびグリフの描画操作に使用するアンチエイリアスモードを指定します。

textAntialiasModeD2D1_TEXT_ANTIALIAS_MODEin以降のテキストおよびグリフの描画操作に使用するアンチエイリアスモード。
vtbl 35 D2D1_TEXT_ANTIALIAS_MODE GetTextAntialiasMode()

テキストおよびグリフの描画操作に対する現在のアンチエイリアスモードを取得します。

戻り値

Type: D2D1_TEXT_ANTIALIAS_MODE

テキストおよびグリフの描画操作に対する現在のアンチエイリアスモード。

vtbl 36 void SetTextRenderingParams(IDWriteRenderingParams* textRenderingParams)

以降のすべてのテキストおよびグリフの描画操作に適用するテキストレンダリングオプションを指定します。

textRenderingParamsIDWriteRenderingParams*inoptional以降のすべてのテキストおよびグリフの描画操作に適用するテキストレンダリングオプション。現在のテキストレンダリングオプションをクリアするには NULL を指定します。

解説(Remarks)

textRenderingParams で指定された設定が、レンダーターゲットのテキストアンチエイリアスモード(SetTextAntialiasMode で指定)と互換性がない場合、以降のテキストおよびグリフの描画操作は失敗し、レンダーターゲットはエラー状態になります。

vtbl 37 void GetTextRenderingParams(IDWriteRenderingParams** textRenderingParams)

レンダーターゲットの現在のテキストレンダリングオプションを取得します。

textRenderingParamsIDWriteRenderingParams**out このメソッドが返るときに、textRenderingParams にはレンダーターゲットの現在のテキストレンダリングオプションへのポインターのアドレスが格納されます。

解説(Remarks)

textRenderingParams で指定された設定が、レンダーターゲットのテキストアンチエイリアスモード(SetTextAntialiasMode で指定)と互換性がない場合、以降のテキストおよびグリフの描画操作は失敗し、レンダーターゲットはエラー状態になります。

vtbl 38 void SetTags(ULONGLONG tag1, ULONGLONG tag2)

以降の描画操作に対するラベルを指定します。

tag1ULONGLONGin以降の描画操作に適用するラベル。
tag2ULONGLONGin以降の描画操作に適用するラベル。

解説(Remarks)

このメソッドで指定したラベルは、デバッグエラーメッセージによって出力されます。タグが設定されていない場合、各タグの既定値は 0 です。

vtbl 39 void GetTags(ULONGLONG* tag1, ULONGLONG* tag2)

以降の描画操作に対するラベルを取得します。

tag1ULONGLONG*outoptionalこのメソッドが返るときに、以降の描画操作に対する 1 つ目のラベルを格納します。このパラメーターは初期化せずに渡します。NULL を指定した場合、このパラメーターには値が取得されません。
tag2ULONGLONG*outoptionalこのメソッドが返るときに、以降の描画操作に対する 2 つ目のラベルを格納します。このパラメーターは初期化せずに渡します。NULL を指定した場合、このパラメーターには値が取得されません。

解説(Remarks)

両方のパラメーターに同じアドレスを渡した場合、両方のパラメーターには 2 つ目のタグの値が格納されます。

vtbl 40 void PushLayer(D2D1_LAYER_PARAMETERS* layerParameters, ID2D1Layer* layer)
layerParametersD2D1_LAYER_PARAMETERS*in境界・マスク・不透明度などレイヤーの構成を指定する属性へのポインタ。
layerID2D1Layer*inoptional描画内容を蓄積するレイヤーリソースへのポインタ。
vtbl 41 void PopLayer()

直前の PushLayer 呼び出しで指定されたレイヤーへの描画操作のリダイレクトを停止します。

解説(Remarks)

PopLayer は、それより前の PushLayer 呼び出しと対応している必要があります。

このメソッドは失敗してもエラーコードを返しません。描画操作(PopLayer など)が失敗したかどうかを判断するには、ID2D1RenderTarget::EndDraw メソッドまたは ID2D1RenderTarget::Flush メソッドが返す結果を確認してください。

次の例では、レイヤーを使用してビットマップをジオメトリックマスクにクリップします。完全な例については、ジオメトリックマスクにクリップする方法を参照してください。

HRESULT DemoApp::RenderWithLayer(ID2D1RenderTarget *pRT)
{
    HRESULT hr = S_OK;

    // Create a layer.
    ID2D1Layer *pLayer = NULL;
    hr = pRT->CreateLayer(NULL, &pLayer);

    if (SUCCEEDED(hr))
    {
        pRT->SetTransform(D2D1::Matrix3x2F::Translation(350, 50));

        // Push the layer with the geometric mask.
        pRT->PushLayer(
            D2D1::LayerParameters(D2D1::InfiniteRect(), m_pPathGeometry),
            pLayer
            );
            
  
        pRT->DrawBitmap(m_pOrigBitmap, D2D1::RectF(0, 0, 200, 133));
        pRT->FillRectangle(D2D1::RectF(0.f, 0.f, 25.f, 25.f), m_pSolidColorBrush);  
        pRT->FillRectangle(D2D1::RectF(25.f, 25.f, 50.f, 50.f), m_pSolidColorBrush);
        pRT->FillRectangle(D2D1::RectF(50.f, 50.f, 75.f, 75.f), m_pSolidColorBrush); 
        pRT->FillRectangle(D2D1::RectF(75.f, 75.f, 100.f, 100.f), m_pSolidColorBrush);    
        pRT->FillRectangle(D2D1::RectF(100.f, 100.f, 125.f, 125.f), m_pSolidColorBrush); 
        pRT->FillRectangle(D2D1::RectF(125.f, 125.f, 150.f, 150.f), m_pSolidColorBrush);    
        

        pRT->PopLayer();
    }

    SafeRelease(&pLayer);

    return hr;
}
vtbl 42 HRESULT Flush(ULONGLONG* tag1, ULONGLONG* tag2)

保留中のすべての描画コマンドを実行します。

tag1ULONGLONG*outoptionalこのメソッドが返るときに、エラーの原因となった描画操作のタグを格納します。エラーがなかった場合は 0 を格納します。このパラメーターは初期化せずに渡します。
tag2ULONGLONG*outoptionalこのメソッドが返るときに、エラーの原因となった描画操作のタグを格納します。エラーがなかった場合は 0 を格納します。このパラメーターは初期化せずに渡します。

戻り値

Type: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返し、エラー発生時に有効だったタグを tag1 および tag2 に設定します。エラーが発生しなかった場合、このメソッドはエラータグの状態を (0,0) に設定します。

解説(Remarks)

このコマンドは、レンダーターゲットに関連付けられている Direct3D デバイスコンテキストをフラッシュしません。

このメソッドを呼び出すと、レンダーターゲットのエラー状態がリセットされます。

vtbl 43 void SaveDrawingState(ID2D1DrawingStateBlock* drawingStateBlock)

現在の描画状態を、指定した ID2D1DrawingStateBlock に保存します。

drawingStateBlockID2D1DrawingStateBlock*inこのメソッドが返るときに、レンダーターゲットの現在の描画状態を格納します。このパラメーターは、メソッドに渡す前に初期化しておく必要があります。
vtbl 44 void RestoreDrawingState(ID2D1DrawingStateBlock* drawingStateBlock)

レンダーターゲットの描画状態を、指定した ID2D1DrawingStateBlock の描画状態に設定します。

drawingStateBlockID2D1DrawingStateBlock*inレンダーターゲットの新しい描画状態。
vtbl 45 void PushAxisAlignedClip(D2D_RECT_F* clipRect, D2D1_ANTIALIAS_MODE antialiasMode)
clipRectD2D_RECT_F*inクリップ領域とする軸平行矩形へのポインタ。
antialiasModeD2D1_ANTIALIAS_MODEinクリップ境界のアンチエイリアス方式を指定する列挙値。
vtbl 46 void PopAxisAlignedClip()

レンダーターゲットから最後の軸に沿ったクリップを削除します。このメソッドを呼び出した後は、そのクリップは以降の描画操作に適用されなくなります。

解説(Remarks)

PushAxisAlignedClip/PopAxisAlignedClip のペアは、PushLayer/PopLayer のペアを囲むように、またはその内側に配置できますが、互いに重なり合ってはなりません。たとえば、PushAxisAlignedClipPushLayerPopLayerPopAxisAlignedClip という順序は有効ですが、PushAxisAlignedClipPushLayerPopAxisAlignedClipPopLayer という順序は無効です。

PopAxisAlignedClip は、PushAxisAlignedClip の呼び出しごとに 1 回呼び出す必要があります。

例については、軸に沿ったクリップ矩形でクリップする方法を参照してください。

このメソッドは失敗してもエラーコードを返しません。描画操作(PopAxisAlignedClip など)が失敗したかどうかを判断するには、ID2D1RenderTarget::EndDraw メソッドまたは ID2D1RenderTarget::Flush メソッドが返す結果を確認してください。

vtbl 47 void Clear(D2D1_COLOR_F* clearColor)
clearColorD2D1_COLOR_F*inoptional塗りつぶしに用いるクリア色へのポインタ。NULL可で透明にクリアする。
vtbl 48 void BeginDraw()

このレンダーターゲットでの描画を開始します。

解説(Remarks)

描画操作は、BeginDrawEndDraw の呼び出しの間でのみ発行できます。

BeginDraw と EndDraw は、レンダーターゲットが Direct2D システムによって使用中であることを示すために使用されます。ID2D1RenderTarget の実装によって、BeginDraw が呼び出されたときの動作は異なる場合があります。たとえば、ID2D1BitmapRenderTargetBeginDraw/EndDraw の呼び出しの間ロックされる場合があり、DXGI サーフェスレンダーターゲットは BeginDraw で取得され EndDraw で解放される場合があり、ID2D1HwndRenderTargetBeginDraw でバッチ処理を開始し EndDraw で表示(present)する場合があります。

BeginDraw メソッドは、レンダリング操作を呼び出す前に呼び出す必要があります。ただし、状態の設定操作や状態の取得操作は、BeginDraw/EndDraw の外側でも実行できます。

BeginDraw が呼び出された後、レンダーターゲットは通常、レンダリングコマンドのバッチを蓄積しますが、内部バッファーがいっぱいになるか、Flush メソッドが呼び出されるか、または EndDraw が呼び出されるまで、これらのコマンドの処理を遅延させます。EndDraw メソッドは、バッチ処理された描画操作を完了させ、その後、操作の成否を示す HRESULT と、必要に応じてエラー発生時のレンダーターゲットのタグ状態を返します。EndDraw メソッドは常に成功します。前回の EndDraw が失敗した HRESULT を返した場合でも、2 回呼び出してはなりません。

BeginDraw の対応する呼び出しなしに EndDraw を呼び出すと、EndDraw の前に BeginDraw を呼び出す必要があることを示すエラーが返されます。

レンダーターゲットで BeginDraw を 2 回呼び出すと、ターゲットはそれ以上何も描画されないエラー状態になり、EndDraw が呼び出されたときに適切な HRESULT とエラー情報が返されます。

次の例では、ID2D1HwndRenderTarget を使用してウィンドウにテキストを描画します。

//  Called whenever the application needs to display the client
//  window. This method writes "Hello, World"
//
//  Note that this function will automatically discard device-specific
//  resources if the Direct3D device disappears during function
//  invocation, and will recreate the resources the next time it's
//  invoked.
//
HRESULT DemoApp::OnRender()
{
    HRESULT hr;

    hr = CreateDeviceResources();

    if (SUCCEEDED(hr))
    {
        static const WCHAR sc_helloWorld[] = L"Hello, World!";

        // Retrieve the size of the render target.
        D2D1_SIZE_F renderTargetSize = m_pRenderTarget->GetSize();

        m_pRenderTarget->BeginDraw();

        m_pRenderTarget->SetTransform(D2D1::Matrix3x2F::Identity());

        m_pRenderTarget->Clear(D2D1::ColorF(D2D1::ColorF::White));

        m_pRenderTarget->DrawText(
            sc_helloWorld,
            ARRAYSIZE(sc_helloWorld) - 1,
            m_pTextFormat,
            D2D1::RectF(0, 0, renderTargetSize.width, renderTargetSize.height),
            m_pBlackBrush
            );

        hr = m_pRenderTarget->EndDraw();

        if (hr == D2DERR_RECREATE_TARGET)
        {
            hr = S_OK;
            DiscardDeviceResources();
        }
    }

    return hr;
}
vtbl 49 HRESULT EndDraw(ULONGLONG* tag1, ULONGLONG* tag2)

レンダーターゲットでの描画操作を終了し、現在のエラー状態と関連するタグを示します。

tag1ULONGLONG*outoptionalこのメソッドが返るときに、エラーの原因となった描画操作のタグを格納します。エラーがなかった場合は 0 を格納します。このパラメーターは初期化せずに渡します。
tag2ULONGLONG*outoptionalこのメソッドが返るときに、エラーの原因となった描画操作のタグを格納します。エラーがなかった場合は 0 を格納します。このパラメーターは初期化せずに渡します。

戻り値

Type: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返し、エラー発生時に有効だったタグを tag1 および tag2 に設定します。

解説(Remarks)

描画操作は、BeginDrawEndDraw の呼び出しの間でのみ発行できます。

BeginDrawEndDraw は、レンダーターゲットが Direct2D システムによって使用中であることを示すために使用されます。ID2D1RenderTarget の実装によって、BeginDraw が呼び出されたときの動作は異なる場合があります。たとえば、ID2D1BitmapRenderTargetBeginDraw/EndDraw の呼び出しの間ロックされる場合があり、DXGI サーフェスレンダーターゲットは BeginDraw で取得され EndDraw で解放される場合があり、ID2D1HwndRenderTargetBeginDraw でバッチ処理を開始し EndDraw で表示(present)する場合があります。

BeginDraw メソッドは、レンダリング操作を呼び出す前に呼び出す必要があります。ただし、状態の設定操作や状態の取得操作は、BeginDraw/EndDraw の外側でも実行できます。

BeginDraw が呼び出された後、レンダーターゲットは通常、レンダリングコマンドのバッチを蓄積しますが、内部バッファーがいっぱいになるか、Flush メソッドが呼び出されるか、または EndDraw が呼び出されるまで、これらのコマンドの処理を遅延させます。EndDraw メソッドは、バッチ処理された描画操作を完了させ、その後、操作の成否を示す HRESULT と、必要に応じてエラー発生時のレンダーターゲットのタグ状態を返します。EndDraw メソッドは常に成功します。前回の EndDraw が失敗した HRESULT を返した場合でも、2 回呼び出してはなりません。

BeginDraw の対応する呼び出しなしに EndDraw を呼び出すと、EndDraw の前に BeginDraw を呼び出す必要があることを示すエラーが返されます。

レンダーターゲットで BeginDraw を 2 回呼び出すと、ターゲットはそれ以上何も描画されないエラー状態になり、EndDraw が呼び出されたときに適切な HRESULT とエラー情報が返されます。

次の例では、ID2D1HwndRenderTarget を使用してウィンドウにテキストを描画します。

//  Called whenever the application needs to display the client
//  window. This method writes "Hello, World"
//
//  Note that this function will automatically discard device-specific
//  resources if the Direct3D device disappears during function
//  invocation, and will recreate the resources the next time it's
//  invoked.
//
HRESULT DemoApp::OnRender()
{
    HRESULT hr;

    hr = CreateDeviceResources();

    if (SUCCEEDED(hr))
    {
        static const WCHAR sc_helloWorld[] = L"Hello, World!";

        // Retrieve the size of the render target.
        D2D1_SIZE_F renderTargetSize = m_pRenderTarget->GetSize();

        m_pRenderTarget->BeginDraw();

        m_pRenderTarget->SetTransform(D2D1::Matrix3x2F::Identity());

        m_pRenderTarget->Clear(D2D1::ColorF(D2D1::ColorF::White));

        m_pRenderTarget->DrawText(
            sc_helloWorld,
            ARRAYSIZE(sc_helloWorld) - 1,
            m_pTextFormat,
            D2D1::RectF(0, 0, renderTargetSize.width, renderTargetSize.height),
            m_pBlackBrush
            );

        hr = m_pRenderTarget->EndDraw();

        if (hr == D2DERR_RECREATE_TARGET)
        {
            hr = S_OK;
            DiscardDeviceResources();
        }
    }

    return hr;
}
vtbl 50 D2D1_PIXEL_FORMAT GetPixelFormat()

レンダーターゲットのピクセルフォーマットとアルファモードを取得します。

戻り値

Type: D2D1_PIXEL_FORMAT

レンダーターゲットのピクセルフォーマットとアルファモード。

vtbl 51 void SetDpi(FLOAT dpiX, FLOAT dpiY)

レンダーターゲットのドット/インチ(DPI)を設定します。

dpiXFLOATinレンダーターゲットの水平方向の DPI を指定する、0 以上の値。
dpiYFLOATinレンダーターゲットの垂直方向の DPI を指定する、0 以上の値。

解説(Remarks)

このメソッドは、レンダーターゲットのピクセル空間からデバイス非依存空間へのマッピングを指定します。dpiXdpiY の両方が 0 の場合、ファクトリが読み取ったシステム DPI が選択されます。一方のパラメーターが 0 で、もう一方が指定されていない場合、DPI は変更されません。

ID2D1HwndRenderTarget の場合、DPI の既定値は、直近にファクトリが読み取ったシステム DPI です。その他のすべてのレンダーターゲットの既定値は 96 DPI です。

vtbl 52 void GetDpi(FLOAT* dpiX, FLOAT* dpiY)

レンダーターゲットのドット/インチ(DPI)を返します。

dpiXFLOAT*outこのメソッドが返るときに、レンダーターゲットの水平方向の DPI を格納します。このパラメーターは初期化せずに渡します。
dpiYFLOAT*outこのメソッドが返るときに、レンダーターゲットの垂直方向の DPI を格納します。このパラメーターは初期化せずに渡します。

解説(Remarks)

このメソッドは、レンダーターゲットのピクセル空間からデバイス非依存空間へのマッピングを示します。

ID2D1HwndRenderTarget の場合、DPI の既定値は、直近にファクトリが読み取ったシステム DPI です。その他のすべてのレンダーターゲットの既定値は 96 DPI です。

vtbl 53 D2D_SIZE_F GetSize()

レンダーターゲットのサイズをデバイス非依存ピクセル単位で返します。

戻り値

Type: D2D1_SIZE_F

レンダーターゲットの現在のサイズ(デバイス非依存ピクセル単位)。

vtbl 54 D2D_SIZE_U GetPixelSize()

レンダーターゲットのサイズをデバイスピクセル単位で返します。

戻り値

Type: D2D1_SIZE_U

レンダーターゲットのサイズ(デバイスピクセル単位)。

vtbl 55 DWORD GetMaximumBitmapSize()

レンダーターゲットがサポートする、ビットマップの 1 辺の最大サイズを、デバイス依存単位(ピクセル)で取得します。

戻り値

Type: UINT32

レンダーターゲットがサポートする、ビットマップの 1 辺の最大サイズ(ピクセル単位)。

解説(Remarks)

このメソッドは、Direct3D デバイスの最大テクスチャサイズを返します。

Note ソフトウェアレンダラーおよび WARP デバイスは、16 メガピクセル(16*1024*1024)の値を返します。このサイズの Direct2D テクスチャは作成できますが、このサイズの Direct3D テクスチャは作成できません。
vtbl 56 BOOL IsSupported(D2D1_RENDER_TARGET_PROPERTIES* renderTargetProperties)
renderTargetPropertiesD2D1_RENDER_TARGET_PROPERTIES*in対応可否を確認するレンダーターゲット属性へのポインタ。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_ID2D1RenderTarget "{2CD90694-12E2-11DC-9FED-001143A055F9}"
#usecom global ID2D1RenderTarget IID_ID2D1RenderTarget "{}"
#comfunc global ID2D1RenderTarget_CreateBitmap                  4 int,sptr,int,var,sptr
#comfunc global ID2D1RenderTarget_CreateBitmapFromWicBitmap     5 sptr,var,sptr
#comfunc global ID2D1RenderTarget_CreateSharedBitmap            6 var,sptr,var,sptr
#comfunc global ID2D1RenderTarget_CreateBitmapBrush             7 sptr,var,var,sptr
#comfunc global ID2D1RenderTarget_CreateSolidColorBrush         8 var,var,sptr
#comfunc global ID2D1RenderTarget_CreateGradientStopCollection  9 var,int,int,int,sptr
#comfunc global ID2D1RenderTarget_CreateLinearGradientBrush     10 var,var,sptr,sptr
#comfunc global ID2D1RenderTarget_CreateRadialGradientBrush     11 var,var,sptr,sptr
#comfunc global ID2D1RenderTarget_CreateCompatibleRenderTarget  12 var,var,var,int,sptr
#comfunc global ID2D1RenderTarget_CreateLayer                   13 var,sptr
#comfunc global ID2D1RenderTarget_CreateMesh                    14 sptr
#comfunc global ID2D1RenderTarget_DrawLine                      15 int,int,sptr,float,sptr
#comfunc global ID2D1RenderTarget_DrawRectangle                 16 var,sptr,float,sptr
#comfunc global ID2D1RenderTarget_FillRectangle                 17 var,sptr
#comfunc global ID2D1RenderTarget_DrawRoundedRectangle          18 var,sptr,float,sptr
#comfunc global ID2D1RenderTarget_FillRoundedRectangle          19 var,sptr
#comfunc global ID2D1RenderTarget_DrawEllipse                   20 var,sptr,float,sptr
#comfunc global ID2D1RenderTarget_FillEllipse                   21 var,sptr
#comfunc global ID2D1RenderTarget_DrawGeometry                  22 sptr,sptr,float,sptr
#comfunc global ID2D1RenderTarget_FillGeometry                  23 sptr,sptr,sptr
#comfunc global ID2D1RenderTarget_FillMesh                      24 sptr,sptr
#comfunc global ID2D1RenderTarget_FillOpacityMask               25 sptr,sptr,int,var,var
#comfunc global ID2D1RenderTarget_DrawBitmap                    26 sptr,var,float,int,var
#comfunc global ID2D1RenderTarget_DrawText                      27 wstr,int,sptr,var,sptr,int,int
#comfunc global ID2D1RenderTarget_DrawTextLayout                28 int,sptr,sptr,int
#comfunc global ID2D1RenderTarget_DrawGlyphRun                  29 int,var,sptr,int
#comfunc global ID2D1RenderTarget_SetTransform                  30 var
#comfunc global ID2D1RenderTarget_GetTransform                  31 var
#comfunc global ID2D1RenderTarget_SetAntialiasMode              32 int
#comfunc global ID2D1RenderTarget_GetAntialiasMode              33
#comfunc global ID2D1RenderTarget_SetTextAntialiasMode          34 int
#comfunc global ID2D1RenderTarget_GetTextAntialiasMode          35
#comfunc global ID2D1RenderTarget_SetTextRenderingParams        36 sptr
#comfunc global ID2D1RenderTarget_GetTextRenderingParams        37 sptr
#comfunc global ID2D1RenderTarget_SetTags                       38 int64,int64
#comfunc global ID2D1RenderTarget_GetTags                       39 var,var
#comfunc global ID2D1RenderTarget_PushLayer                     40 var,sptr
#comfunc global ID2D1RenderTarget_PopLayer                      41
#comfunc global ID2D1RenderTarget_Flush                         42 var,var
#comfunc global ID2D1RenderTarget_SaveDrawingState              43 sptr
#comfunc global ID2D1RenderTarget_RestoreDrawingState           44 sptr
#comfunc global ID2D1RenderTarget_PushAxisAlignedClip           45 var,int
#comfunc global ID2D1RenderTarget_PopAxisAlignedClip            46
#comfunc global ID2D1RenderTarget_Clear                         47 var
#comfunc global ID2D1RenderTarget_BeginDraw                     48
#comfunc global ID2D1RenderTarget_EndDraw                       49 var,var
#comfunc global ID2D1RenderTarget_GetPixelFormat                50
#comfunc global ID2D1RenderTarget_SetDpi                        51 float,float
#comfunc global ID2D1RenderTarget_GetDpi                        52 var,var
#comfunc global ID2D1RenderTarget_GetSize                       53
#comfunc global ID2D1RenderTarget_GetPixelSize                  54
#comfunc global ID2D1RenderTarget_GetMaximumBitmapSize          55
#comfunc global ID2D1RenderTarget_IsSupported                   56 var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。