IXpsOMTileBrush
COM公式ドキュメント
タイルブラシは、ビジュアルイメージを繰り返し描画することで領域を塗りつぶします。
解説(Remarks)
次の図に示すように、タイルブラシはビジュアル要素またはその一部を取得し、その要素を変換してタイルを作成し、そのタイルを出力領域のビューポートに配置して、タイルモードで指定されたとおりに出力領域を塗りつぶします。
前の図において、viewport(ビューポート)は、出力領域内で最初のタイルが占める領域です。ビューポートの画像は、タイルモードで指定されたとおりに出力領域全体に繰り返されます。transform プロパティは、ビューポートが出力領域にタイル配置された後に、出力領域をどのように変換するかを決定します。最終的に可視イメージとして描画される出力領域の部分は、このタイルブラシを使用しているパス、ストローク、またはグリフによって決まります。
viewbox(ビューボックス)は、ブラシに使用されるソース画像の範囲を表します。前の図のビューボックスはソース画像と同じサイズであるため、ソース画像全体がブラシに使用されます。ビューボックスは元の画像より小さくすることもできます。
次の図では、元の画像またはビジュアルの一部だけを含むビューボックスを使用してブラシを作成しています。
次の図は、タイル画像を繰り返して出力領域を塗りつぶすために使用されるタイルモードを示しています。タイルモードの値が XPS_TILE_MODE_NONE の場合、タイル画像は一度だけ描画されます。

メソッド 11
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
ブラシの解決済みマトリックス変換を保持する IXpsOMMatrixTransform インターフェースへのポインターを取得します。(IXpsOMTileBrush.GetTransform)
| transform | IXpsOMMatrixTransform** | out | ブラシの解決済みマトリックス変換を保持する IXpsOMMatrixTransform インターフェースへのポインター。マトリックス変換が設定されていない場合は、NULL ポインターが返されます。 このパラメーターに返される値は、変換を設定するために直近に呼び出されたメソッドによって異なります。
|
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| transform が NULL です。 | |
|
SetStrokeBrushLookup によって設定されたルックアップキー名が、ブラシではないオブジェクトを参照しています。 |
|
ルックアップ値と一致するキー名を持つオブジェクトが見つかりませんでした。 |
解説(Remarks)
この変換は、タイルブラシを使用しているパス、ストローク、またはグリフにブラシ画像が描画される前に、出力領域をどのように変換するかを決定します。
ブラシのローカルな(共有されない)解決済みマトリックス変換を保持する IXpsOMMatrixTransform インターフェースへのポインターを取得します。
| transform | IXpsOMMatrixTransform** | out | ブラシのローカルな(共有されない)解決済みマトリックス変換を保持する IXpsOMMatrixTransform インターフェースへのポインター。ローカルなマトリックス変換が設定されていない場合、またはマトリックス変換のルックアップキーが設定されている場合は、NULL ポインターが返されます。
|
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| transform が NULL です。 |
解説(Remarks)
この変換は、タイルブラシを使用しているパス、ストローク、またはグリフにブラシ画像が描画される前に、出力領域をどのように変換するかを決定します。
IXpsOMMatrixTransform インターフェースポインターを、ローカルな(共有されない)マトリックス変換として設定します。
| transform | IXpsOMMatrixTransform* | in | ローカルな(共有されない)マトリックス変換として設定する IXpsOMMatrixTransform インターフェースへのポインター。ローカル変換が既に設定されている場合、NULL ポインターを指定するとそれが解放されます。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| transform が認識可能なインターフェース実装を指していません。XPS ドキュメント API インターフェースの独自実装はサポートされていません。 |
解説(Remarks)
この変換は、タイルブラシを使用しているパス、ストローク、またはグリフにブラシ画像が描画される前に、出力領域をどのように変換するかを決定します。
SetTransformLocal を呼び出すと、変換のルックアップキーは解放され、GetTransformLookup は key パラメーターに NULL ポインターを返します。次の表は、このプロパティのローカル値とルックアップ値の関係を示しています。
| 直近に呼び出されたメソッド | GetTransform が transform に返すオブジェクト | GetTransformLocal が transform に返すオブジェクト | GetTransformLookup が key に返す文字列 |
|---|---|---|---|
| SetTransformLocal(このメソッド) | SetTransformLocal によって設定された変換。 | SetTransformLocal によって設定された変換。 | NULL ポインター。 |
| SetTransformLookup によって設定されたキーと一致するルックアップキーを使用して、リソースディレクトリから取得された変換。 | NULL ポインター。 | SetTransformLookup によって設定されたルックアップキー。 | |
| SetTransformLocal と SetTransformLookup のどちらもまだ呼び出されていません。 | NULL ポインター。 | NULL ポインター。 | NULL ポインター。 |
ブラシの解決済みマトリックス変換を保持する IXpsOMMatrixTransform インターフェースを、リソースディクショナリ内で識別するルックアップキーを取得します。
| key | LPWSTR* | out | ブラシの解決済みマトリックス変換を保持する IXpsOMMatrixTransform インターフェースを、リソースディクショナリ内で識別するルックアップキー。マトリックス変換のルックアップキーが設定されていない場合、またはローカルなマトリックス変換が設定されている場合は、NULL ポインターが返されます。
|
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| key が NULL です。 |
解説(Remarks)
この変換は、タイルブラシを使用しているパス、ストローク、またはグリフにブラシ画像が描画される前に、出力領域をどのように変換するかを決定します。
このメソッドは、key に返される文字列が使用するメモリを割り当てます。key が NULL でない場合は、CoTaskMemFree 関数を使用してメモリを解放してください。
このブラシの変換として使用する、共有マトリックス変換のルックアップキー名を設定します。
| key | LPWSTR | in | リソースディクショナリ内の共有マトリックス変換のルックアップキー名を格納する文字列変数。ルックアップキーが既に設定されている場合、NULL ポインターを指定するとそれがクリアされます。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| XML Paper Specification に照らして、lookup の値が有効なルックアップキー文字列ではありません。 | |
| key に指定されたルックアップキー名が、ジオメトリではないオブジェクトを参照しています。 | |
|
key に渡された値と一致するキー名を持つオブジェクトが見つかりませんでした。 |
解説(Remarks)
この変換は、タイルブラシを使用しているパス、ストローク、またはグリフにブラシ画像が描画される前に適用されます。タイルブラシが持つ変換は 1 つだけで、ローカルまたはリモートのいずれかになります。
SetTransformLookup を呼び出すと、ローカル変換は解放され、GetTransformLocal は transform パラメーターに NULL ポインターを返します。次の表は、このプロパティのローカル値とルックアップ値の関係を示しています。
| 直近に呼び出されたメソッド | GetTransform が transform に返すオブジェクト | GetTransformLocal が transform に返すオブジェクト | GetTransformLookup が key に返す文字列 |
|---|---|---|---|
| SetTransformLocal によって設定された変換。 | SetTransformLocal によって設定された変換。 | NULL ポインター。 | |
| SetTransformLookup(このメソッド) | SetTransformLookup によって設定されたキーと一致するルックアップキーを使用して、リソースディレクトリから取得された変換。 | NULL ポインター。 | SetTransformLookup によって設定されたルックアップキー。 |
| SetTransformLocal と SetTransformLookup のどちらもまだ呼び出されていません。 | NULL ポインター。 | NULL ポインター。 | NULL ポインター。 |
タイルが使用するソース画像の範囲を取得します。
| viewbox | XPS_RECT* | out | タイルが使用するソースコンテンツの領域を表す XPS_RECT 構造体。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| viewbox が NULL です。 |
解説(Remarks)
ブラシのビューボックスは、タイル画像として使用するソース画像またはビジュアルの範囲を指定します。
ブラシのビューボックスの座標はソースコンテンツを基準としており、(0,0) はソースコンテンツの左上隅を表します。画像の場合、ブラシのビューボックスで指定される寸法は 1/96" 単位で表されます。ソース画像内の対応するピクセル座標は次のように計算されます。
次の図では、左の画像はソース画像の例、中央の画像は選択されたビューボックス、右の画像はその結果得られるブラシを示しています。
ソース画像の解像度が 96 × 96 dpi、画像サイズが 96 × 96 ピクセルである場合、viewbox パラメーターの各フィールドの値は次のようになります。
上記のパラメーター値は、ソース画像において次のように対応します。
- SourceLeft = 96 × 48 / 96 = 左端から 48 ピクセル
- SourceTop = 96 × 4 / 96 = 上端から 24 ピクセル
- SourceWidth = 96 × 24 / 96 = 幅 24 ピクセル
- SourceHeight = 96 × 48 / 96 = 高さ 48 ピクセル
タイル画像として使用するソースコンテンツの範囲を設定します。
| viewbox | XPS_RECT* | in | タイル画像として使用するソースコンテンツの範囲を表す XPS_RECT 構造体。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| viewbox が NULL です。 | |
| viewbox で指定された四角形が有効ではありませんでした。 |
解説(Remarks)
ブラシのビューボックスは、タイル画像として使用するソース画像またはビジュアルの範囲を指定します。
ブラシのビューボックスの座標はソースコンテンツを基準としており、(0,0) はソースコンテンツの左上隅を表します。画像の場合、ブラシのビューボックスで指定される寸法は 1/96" 単位で表されます。ソース画像内の対応するピクセル座標は次のように計算されます。
次の図では、左の画像はソース画像の例で、右の画像はブラシ用に選択されたビューボックスを赤い四角形で示したソース画像です。この例では、タイルブラシのコンテンツとして使用されるのは赤い四角形の内側の領域です。画像の網掛け部分はブラシでは使用されません。
ソース画像の解像度が 96 × 96 dpi、画像サイズが 96 × 96 ピクセルである場合、viewbox パラメーターの各フィールドの値は次のようになります。
上記のパラメーター値は、ソース画像において次のように対応します。
- SourceLeft = 96 * 48 / 96 = 左端から 48 ピクセル
- SourceTop = 96 * 24 / 96 = 上端から 24 ピクセル
- SourceWidth = 96 * 24 / 96 = 幅 24 ピクセル
- SourceHeight = 96 * 48 / 96 = 高さ 48 ピクセル
1 つのタイルが覆う描画先ジオメトリの範囲を取得します。
| viewport | XPS_RECT* | out | 1 つのタイルが覆う描画先ジオメトリの範囲を表す XPS_RECT 構造体。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| viewport が NULL です。 |
解説(Remarks)
ビューポートは、最初のタイルが描画される出力領域の部分です。図では、ビューポートは赤い点線の四角形の内側にある紫色の四角形で示されています。ブラシのタイルモードによって、残りのタイルが出力領域にどのように描画されるかが決まります。

1 つのタイルが覆う描画先ジオメトリの範囲を設定します。
| viewport | XPS_RECT* | in | 1 つのタイルが覆う描画先ジオメトリの範囲を表す XPS_RECT 構造体。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| viewport が NULL です。 | |
| viewport で指定された四角形が有効ではありません。 |
解説(Remarks)
ビューポートは、タイルが描画される出力領域の部分です。次の図では、ビューポートは赤い点線の四角形の内側にある青い四角形で示されています。ブラシのタイルモードによって、他のタイルが出力領域にどのように描画されるかが決まります。

ブラシのタイルモードを表す XPS_TILE_MODE 値を取得します。
| tileMode | XPS_TILE_MODE* | out | ブラシのタイルモードを表す XPS_TILE_MODE 値。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| tileMode が NULL です。 |
解説(Remarks)
タイルモードは、出力領域を塗りつぶすためにタイル画像をどのように繰り返すかを決定します。タイルモードの値が XPS_TILE_MODE_NONE の場合、タイル画像は一度だけ描画されます。次の図は、いくつかのタイルモードでタイル画像がどのように表示されるかの例を示しています。

ブラシのタイリングモードを表す XPS_TILE_MODE 値を設定します。
| tileMode | XPS_TILE_MODE | in | 設定する XPS_TILE_MODE 値。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| tileMode が有効な XPS_TILE_MODE 値ではありませんでした。 |
解説(Remarks)
タイルモードは、出力領域を塗りつぶすためにタイル画像をどのように繰り返すかを決定します。タイルモードの値が XPS_TILE_MODE_NONE の場合、タイル画像は一度だけ描画されます。

Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IXpsOMTileBrush "{0FC2328D-D722-4A54-B2EC-BE90218A789E}" #usecom global IXpsOMTileBrush IID_IXpsOMTileBrush "{}" #comfunc global IXpsOMTileBrush_GetTransform 7 sptr #comfunc global IXpsOMTileBrush_GetTransformLocal 8 sptr #comfunc global IXpsOMTileBrush_SetTransformLocal 9 sptr #comfunc global IXpsOMTileBrush_GetTransformLookup 10 var #comfunc global IXpsOMTileBrush_SetTransformLookup 11 wstr #comfunc global IXpsOMTileBrush_GetViewbox 12 var #comfunc global IXpsOMTileBrush_SetViewbox 13 var #comfunc global IXpsOMTileBrush_GetViewport 14 var #comfunc global IXpsOMTileBrush_SetViewport 15 var #comfunc global IXpsOMTileBrush_GetTileMode 16 var #comfunc global IXpsOMTileBrush_SetTileMode 17 int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IXpsOMTileBrush "{0FC2328D-D722-4A54-B2EC-BE90218A789E}" #usecom global IXpsOMTileBrush IID_IXpsOMTileBrush "{}" #comfunc global IXpsOMTileBrush_GetTransform 7 sptr #comfunc global IXpsOMTileBrush_GetTransformLocal 8 sptr #comfunc global IXpsOMTileBrush_SetTransformLocal 9 sptr #comfunc global IXpsOMTileBrush_GetTransformLookup 10 sptr #comfunc global IXpsOMTileBrush_SetTransformLookup 11 wstr #comfunc global IXpsOMTileBrush_GetViewbox 12 sptr #comfunc global IXpsOMTileBrush_SetViewbox 13 sptr #comfunc global IXpsOMTileBrush_GetViewport 14 sptr #comfunc global IXpsOMTileBrush_SetViewport 15 sptr #comfunc global IXpsOMTileBrush_GetTileMode 16 sptr #comfunc global IXpsOMTileBrush_SetTileMode 17 int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。