IXpsOMGradientBrush
COM公式ドキュメント
このインターフェイスは、グラデーション ストップで構成されるグラデーションを表します。IXpsOMGradientBrush を継承するクラスは、グラデーション ストップのさまざまな解釈方法を指定します。
解説(Remarks)
このインターフェイスのメソッドは、グラデーションの基本的なパラメーターを定義します。これらのパラメーターがどのように適用されるかは、線形または放射状のいずれかであるグラデーションの種類によって決まります。
次の図に示すように、線形グラデーションの開始点と終了点は、グラデーション パスの両端を示します。グラデーション パスは、開始点と終了点を結ぶ直線です。線形グラデーションのグラデーション領域は、開始点と終了点の間 (これらの点を含む) の領域で構成され、グラデーション パスに対して直角の両方向に広がります。スプレッド領域は、グラデーション領域の外側の領域です。
グラデーション ストップは、グラデーション パス上の特定の位置における色を定義します。次の図に示すように、色はグラデーション ストップの間でグラデーション パスに沿って補間されます。
次の図に示すように、放射状グラデーションのグラデーション領域は、中心点と、中心点から伸びる x 半径および y 半径によって表される楕円で囲まれた領域です。スプレッド領域は、その楕円の外側の領域です。グラデーション パスは、グラデーションの原点からグラデーション領域を囲む楕円まで、グラデーション領域全体を掃引する放射状の線です。次の図では、グラデーション パスは示されていません。
スプレッド メソッドは、スプレッド領域をどのように塗りつぶすかを表します。スプレッド メソッドの実装は、グラデーションの種類 (線形または放射状) によって異なります。次の図は、スプレッド領域を塗りつぶす方法の例をいくつか示しています。さまざまなスプレッド メソッドの詳細については、XPS_SPREAD_METHOD を参照してください。
変換は、結果として得られるグラデーションがどのように変換されるかを決定します。最終的に画像として描画されるグラデーションの可視部分は、そのグラデーション ブラシを使用しているパス、ストローク、またはグリフによって決まります。メソッド 10
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
グラデーションを定義する IXpsOMGradientStop インターフェイスのコレクションを格納した IXpsOMGradientStopCollection インターフェイスへのポインターを取得します。
| gradientStops | IXpsOMGradientStopCollection** | out | IXpsOMGradientStop インターフェイスのコレクションを格納した IXpsOMGradientStopCollection インターフェイスへのポインター。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表に示すものが含まれますが、これらに限定されません。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラー を参照してください。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| gradientStops が NULL です。 |
解説(Remarks)
XPS OM において IXpsOMGradientStop インターフェイスで表されるグラデーション ストップは、グラデーション パス上の特定の位置における色を定義するために使用されます。色はグラデーション ストップの間で補間されます。次の図は、線形グラデーションのグラデーション パスとグラデーション ストップを示しています。
次の図は、放射状グラデーションのグラデーション ストップを示しています。この例では、グラデーション領域は外側の楕円で囲まれた領域であり、放射状グラデーションは XPS_SPREAD_METHOD_REFLECT スプレッド メソッドを使用してグラデーション領域の外側の空間を塗りつぶしています。

ブラシに対して解決された行列変換を格納した IXpsOMMatrixTransform インターフェイスへのポインターを取得します。(IXpsOMGradientBrush.GetTransform)
| transform | IXpsOMMatrixTransform** | out | ブラシに対して解決された行列変換を格納した IXpsOMMatrixTransform インターフェイスへのポインター。変換が設定されていない場合は、NULL ポインターが返されます。 このパラメーターに返される値は、変換を設定するために直前に呼び出されたメソッドによって異なります。
|
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表に示すものが含まれますが、これらに限定されません。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラー を参照してください。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| transform が NULL です。 | |
|
SetStrokeBrushLookup によって設定されたルックアップ キー名が、ブラシではないオブジェクトを参照しています。 |
|
ルックアップ値と一致するキー名を持つオブジェクトが見つかりませんでした。
lookup に渡された値と一致するキー名を持つオブジェクトが見つかりませんでした。 |
解説(Remarks)
変換は、グラデーションがどのように変換されるかを決定します。最終的に画像として描画されるグラデーションの可視部分は、そのグラデーション ブラシを使用しているパス、ストローク、またはグリフによって決まります。
ブラシに対する、ローカルで共有されない解決済みの行列変換を格納した IXpsOMMatrixTransform インターフェイスへのポインターを取得します。
| transform | IXpsOMMatrixTransform** | out | ブラシに対する、ローカルで共有されない解決済みの行列変換を格納した IXpsOMMatrixTransform インターフェイスへのポインター。変換が設定されていない場合、または行列変換のルックアップ キーが設定されている場合は、NULL ポインターが返されます。 このパラメーターに返される値は、変換を設定するために直前に呼び出されたメソッドによって異なります。
|
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表に示すものが含まれますが、これらに限定されません。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラー を参照してください。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| transform が NULL です。 |
解説(Remarks)
変換は、グラデーションがどのように変換されるかを決定します。最終的に画像として描画されるグラデーションの可視部分は、そのグラデーション ブラシを使用しているパス、ストローク、またはグリフによって決まります。
ブラシに使用する、ローカルで共有されない行列変換の IXpsOMMatrixTransform インターフェイス ポインターを設定します。
| transform | IXpsOMMatrixTransform* | in | ブラシに使用する、ローカルで共有されない行列変換の IXpsOMMatrixTransform インターフェイスへのポインター。NULL ポインターを指定すると、以前に設定されたインターフェイスは解放されます。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表に示すものが含まれますが、これらに限定されません。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラー を参照してください。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| transform が、認識されるインターフェイス実装を指していません。XPS ドキュメント API インターフェイスの独自実装はサポートされていません。 |
解説(Remarks)
SetTransformLocal を呼び出すと、変換のルックアップ キーは解放され、GetTransformLocal は transform パラメーターに NULL ポインターを返します。次の表は、このプロパティのローカル値とルックアップ値の関係を示しています。
| 直前に呼び出されたメソッド | GetTransform によって transform に返されるオブジェクト | GetTransformLocal によって transform に返されるオブジェクト | GetTransformLookup によって key に返されるオブジェクト |
|---|---|---|---|
| SetTransformLocal (このメソッド) | SetTransformLocal によって設定されたローカルの変換。 | SetTransformLocal によって設定されたローカルの変換。 | NULL ポインター。 |
| SetTransformLookup によって設定されたキーと一致するルックアップ キーで、リソース ディレクトリから取得された共有の変換。 | NULL ポインター。 | SetTransformLookup によって設定されたルックアップ キー。 | |
| SetTransformLocal と SetTransformLookup のどちらもまだ呼び出されていない。 | NULL ポインター。 | NULL ポインター。 | NULL ポインター。 |
transform に渡された変換は、グラデーションがどのように変換されるかを決定します。最終的に画像として描画されるグラデーションの可視部分は、そのグラデーション ブラシを使用しているパス、ストローク、またはグリフによって決まります。
ブラシに使用する共有行列変換インターフェイスのルックアップ キー名を取得します。
| key | LPWSTR* | out | ブラシに使用する共有行列変換インターフェイスのルックアップ キー名。ルックアップ キー名が設定されていない場合、またはローカルの行列変換が設定されている場合は、NULL ポインターが返されます。 このパラメーターに返される値は、ルックアップ キーまたは変換を設定するために直前に呼び出されたメソッドによって異なります。
|
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表に示すものが含まれますが、これらに限定されません。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラー を参照してください。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| key が NULL です。 |
解説(Remarks)
このメソッドは IXpsOMMatrixTransform インターフェイス ポインターを返しません。ディクショナリからこのポインターを取得するには、IXpsOMDictionary::GetByKey を呼び出してください。
変換は、グラデーションがどのように変換されるかを決定します。最終的に画像として描画されるグラデーションの可視部分は、そのグラデーション ブラシを使用しているパス、ストローク、またはグリフによって決まります。
このメソッドは、key に返される文字列が使用するメモリを割り当てます。key が NULL でない場合は、CoTaskMemFree 関数を使用してメモリを解放してください。
ブラシに使用する共有行列変換のルックアップ キー名を設定します。
| key | LPWSTR | in | ブラシに使用する行列変換のルックアップ キー名。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表に示すものが含まれますが、これらに限定されません。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラー を参照してください。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| XML Paper Specification に照らして、lookup の値が有効なルックアップ キー文字列ではありません。 | |
| key のルックアップ キー名が、ジオメトリではないオブジェクトを参照しています。 | |
|
key に渡された値と一致するキー名を持つオブジェクトが見つかりませんでした。 |
解説(Remarks)
SetTransformLookup を呼び出すと、ローカルの変換は解放され、GetTransformLocal は transform パラメーターに NULL ポインターを返します。次の表は、このプロパティのローカル値とルックアップ値の関係を示しています。
| 直前に呼び出されたメソッド | GetTransform によって transform に返されるオブジェクト | GetTransformLocal によって transform に返されるオブジェクト | GetTransformLookup によって key に返されるオブジェクト |
|---|---|---|---|
| SetTransformLocal によって設定されたローカルの変換。 | SetTransformLocal によって設定されたローカルの変換。 | NULL ポインター。 | |
| SetTransformLookup (このメソッド) | SetTransformLookup によって設定されたキーと一致するルックアップ キーで、リソース ディレクトリから取得された共有の変換。 | NULL ポインター。 | SetTransformLookup によって設定されたルックアップ キー。 |
| SetTransformLocal と SetTransformLookup のどちらもまだ呼び出されていない。 | NULL ポインター。 | NULL ポインター。 | NULL ポインター。 |
key によって参照される変換は、グラデーションがどのように変換されるかを決定します。最終的に画像として描画されるグラデーションの可視部分は、そのブラシを使用しているパス、ストローク、またはグリフによって決まります。
グラデーション領域の外側の領域をどのように描画するかを表す XPS_SPREAD_METHOD 値を取得します。
| spreadMethod | XPS_SPREAD_METHOD* | out | グラデーション領域の外側の領域をどのように描画するかを表す XPS_SPREAD_METHOD 値。グラデーション領域は、このインターフェイスを継承する線形グラデーション ブラシまたは放射状グラデーション ブラシによって定義されます。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表に示すものが含まれますが、これらに限定されません。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラー を参照してください。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| spreadMethod が NULL です。 |
解説(Remarks)
さまざまな種類のスプレッド メソッドの詳細については、XPS_SPREAD_METHOD を参照してください。
グラデーション領域の外側の領域をどのように描画するかを表す XPS_SPREAD_METHOD 値を設定します。
| spreadMethod | XPS_SPREAD_METHOD | in | グラデーション領域の外側の領域をどのように描画するかを表す XPS_SPREAD_METHOD 値。グラデーション領域は、このインターフェイスを継承する線形グラデーション ブラシまたは放射状グラデーション ブラシによって定義されます。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表に示すものが含まれますが、これらに限定されません。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラー を参照してください。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| spreadMethod パラメーターが有効な XPS_SPREAD_METHOD 値ではありませんでした。 |
解説(Remarks)
さまざまな種類のスプレッド メソッドの詳細については、XPS_SPREAD_METHOD を参照してください。
色の補間に使用するガンマ関数を取得します。
| colorInterpolationMode | XPS_COLOR_INTERPOLATION* | out | 色の補間に使用するガンマ関数を表す XPS_COLOR_INTERPOLATION 値。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表に示すものが含まれますが、これらに限定されません。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラー を参照してください。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| colorInterpolationMode が NULL です。 |
色の補間に使用するガンマ関数を表す XPS_COLOR_INTERPOLATION 値を設定します。
| colorInterpolationMode | XPS_COLOR_INTERPOLATION | in | 色の補間に使用するガンマ関数を表す XPS_COLOR_INTERPOLATION 値。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IXpsOMGradientBrush "{EDB59622-61A2-42C3-BACE-ACF2286C06BF}" #usecom global IXpsOMGradientBrush IID_IXpsOMGradientBrush "{}" #comfunc global IXpsOMGradientBrush_GetGradientStops 7 sptr #comfunc global IXpsOMGradientBrush_GetTransform 8 sptr #comfunc global IXpsOMGradientBrush_GetTransformLocal 9 sptr #comfunc global IXpsOMGradientBrush_SetTransformLocal 10 sptr #comfunc global IXpsOMGradientBrush_GetTransformLookup 11 var #comfunc global IXpsOMGradientBrush_SetTransformLookup 12 wstr #comfunc global IXpsOMGradientBrush_GetSpreadMethod 13 var #comfunc global IXpsOMGradientBrush_SetSpreadMethod 14 int #comfunc global IXpsOMGradientBrush_GetColorInterpolationMode 15 var #comfunc global IXpsOMGradientBrush_SetColorInterpolationMode 16 int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IXpsOMGradientBrush "{EDB59622-61A2-42C3-BACE-ACF2286C06BF}" #usecom global IXpsOMGradientBrush IID_IXpsOMGradientBrush "{}" #comfunc global IXpsOMGradientBrush_GetGradientStops 7 sptr #comfunc global IXpsOMGradientBrush_GetTransform 8 sptr #comfunc global IXpsOMGradientBrush_GetTransformLocal 9 sptr #comfunc global IXpsOMGradientBrush_SetTransformLocal 10 sptr #comfunc global IXpsOMGradientBrush_GetTransformLookup 11 sptr #comfunc global IXpsOMGradientBrush_SetTransformLookup 12 wstr #comfunc global IXpsOMGradientBrush_GetSpreadMethod 13 sptr #comfunc global IXpsOMGradientBrush_SetSpreadMethod 14 int #comfunc global IXpsOMGradientBrush_GetColorInterpolationMode 15 sptr #comfunc global IXpsOMGradientBrush_SetColorInterpolationMode 16 int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。