ID2D1Brush
COM公式ドキュメント
領域を塗りつぶすオブジェクトを定義します。ID2D1Brush から派生するインターフェイスは、その領域をどのように塗りつぶすかを記述します。
解説(Remarks)
ID2D1BitmapBrush はデバイス依存のリソースです。アプリケーションは、ビットマップ ブラシを使用する render target を初期化した後にビットマップ ブラシを作成し、render target の再作成が必要になるたびにビットマップ ブラシも再作成する必要があります。(リソースの詳細については、Resources Overview を参照してください。)
Direct2D のブラシ空間は、XPS や Windows Presentation Foundation (WPF) とは異なる方法で指定されます。Direct2D では、ブラシ空間は描画対象のオブジェクトを基準とするのではなく、render target の現在の座標系(ブラシ変換が指定されている場合はそれによって変換されたもの)になります。WPF ブラシで塗りつぶす場合と同じようにオブジェクトを塗りつぶすには、ブラシ空間の原点をオブジェクトのバウンディング ボックスの左上隅に移動し、基準タイルがオブジェクトのバウンディング ボックスを埋めるようにブラシ空間をスケーリングする必要があります。
ブラシの詳細については、Brushes Overview を参照してください。
メソッド 4
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
このブラシの不透明度を設定します。
| opacity | FLOAT | in | ブラシの不透明度を示す 0 から 1 の間の値です。この値は、ブラシで塗りつぶされるすべてのピクセルのアルファ値を線形にスケーリングする定数の乗数です。不透明度の値は、乗算される前に 0~1 の範囲にクランプされます。 |
| transform | D2D_MATRIX_3X2_F* | in | ブラシ空間に適用する2x3アフィン変換行列(D2D_MATRIX_3X2_F)へのポインタ。 |
このブラシの不透明度を取得します。
戻り値
Type: FLOAT
ブラシの不透明度を示す 0 から 1 の間の値です。この値は、ブラシで塗りつぶされるすべてのピクセルのアルファ値を線形にスケーリングする定数の乗数です。不透明度の値は、乗算される前に 0~1 の範囲にクランプされます。
このブラシに適用されている変換を取得します。
| transform | D2D_MATRIX_3X2_F* | out | このブラシに適用されている変換です。 |
解説(Remarks)
ブラシ変換が単位行列の場合、ブラシは描画先の render target と同じ座標空間に表示されます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ID2D1Brush "{2CD906A8-12E2-11DC-9FED-001143A055F9}" #usecom global ID2D1Brush IID_ID2D1Brush "{}" #comfunc global ID2D1Brush_SetOpacity 4 float #comfunc global ID2D1Brush_SetTransform 5 var #comfunc global ID2D1Brush_GetOpacity 6 #comfunc global ID2D1Brush_GetTransform 7 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_ID2D1Brush "{2CD906A8-12E2-11DC-9FED-001143A055F9}" #usecom global ID2D1Brush IID_ID2D1Brush "{}" #comfunc global ID2D1Brush_SetOpacity 4 float #comfunc global ID2D1Brush_SetTransform 5 sptr #comfunc global ID2D1Brush_GetOpacity 6 #comfunc global ID2D1Brush_GetTransform 7 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。