Share via


IXpsOMObjectFactory::CreateImageBrush メソッド (xpsobjectmodel.h)

IXpsOMImageBrush インターフェイスを作成します。

構文

HRESULT CreateImageBrush(
  [in]          IXpsOMImageResource *image,
  [in]          const XPS_RECT      *viewBox,
  [in]          const XPS_RECT      *viewPort,
  [out, retval] IXpsOMImageBrush    **imageBrush
);

パラメーター

[in] image

ブラシのソース イメージとして使用するイメージを含む IXpsOMImageResource インターフェイス。

[in] viewBox

ビュー ボックスを定義するXPS_RECT構造体。これは、ブラシで使用されるソース イメージの領域です。

[in] viewPort

ビューポートを定義するXPS_RECT構造体。これは、出力領域の最初のタイルで覆われた領域です。

[out, retval] imageBrush

新しい IXpsOMImageBrush インターフェイスへのポインター。

戻り値

このメソッドは HRESULT を返します。 使用可能な値には、次の表に含まれる値が含まれますが、これらに限定されません。 この表に記載されていない XPS ドキュメント API の戻り値については、「 XPS ドキュメント エラー」を参照してください。

リターン コード 説明
S_OK
メソッドが成功しました。
E_POINTER
imageviewBoxviewPort、または imageBrushNULL です
E_INVALIDARG
viewBox または viewPort には、無効な四角形または値が含まれています。

注釈

ブラシの viewbox は、タイル イメージとして使用するソース イメージまたはビジュアルの部分を指定します。

ブラシのビューボックスの座標は、ソース コンテンツを基準にして相対的であり、(0,0) はソース コンテンツの左上隅を指定します。 画像の場合、ブラシのビューボックスで指定された寸法は、1/96 の単位で表されます。 ソース イメージ内の対応するピクセル座標は、次のように計算されます。

次の図では、左側の画像はソースイメージの例であり、右端はビューボックスを選択した後に発生するブラシです。

ビューボックスの例を示す図 ソースイメージの解像度が 96 x 96 ドット/インチで、画像のサイズが 96 x 96 ピクセルの場合、 viewbox パラメーターのフィールドの値は次のようになります。

上記のパラメーター値は、次のようにソース イメージに対応しています。

SourceLeft = (96 × 48) / 96 = 左側から 48 ピクセル
SourceTop = (96 × 24) / 96 = 上から 24 ピクセル
SourceWidth = (96 × 24) / 96 = 24 ピクセル幅
SourceHeight = (96 × 48) / 96 = 48 ピクセルの高さ

イメージ ブラシは、イメージまたはその一部を受け取り、イメージを変換してタイルを作成し、結果のタイルをビューポート (出力領域のタイルの宛先ジオメトリ) に配置し、タイル モードで説明されているように出力領域を塗りつぶすタイル ブラシです。

ビューポートは、出力領域の最初のタイルで覆われた領域です。 ビューポート イメージは、タイル モードで説明されているように、出力領域全体で繰り返されます。

次の図は、画像ブラシを使用して出力領域を塗りつぶす方法を示しています。 左から右へ、元のイメージがビューポートに塗りつぶされるように変換され、出力領域のビューポート領域に配置され、出力領域に塗りつぶされるように並べて表示されます。

タイル ブラシがジオメトリを塗りつぶす方法を示す図 次のコード例は、このメソッドを使用して新しいインターフェイスを作成する方法を示しています。

IXpsOMImageBrush            *newInterface;
// The following values are defined outside of 
// this example.
//  IXpsOMImageResource     *image;
//  XPS_RECT                viewBox;
//  XPS_RECT                viewPort;

// Note the implicit requirement that CoInitializeEx 
//  has previously been called from this thread.

hr = CoCreateInstance(
    __uuidof(XpsOMObjectFactory),
    NULL,
    CLSCTX_INPROC_SERVER,
    _uuidof(IXpsOMObjectFactory),
    reinterpret_cast<LPVOID*>(&xpsFactory)
    );

if (SUCCEEDED(hr))
{
    hr = xpsFactory->CreateImageBrush (
        image,
        &viewBox,
        &viewPort,
        &newInterface);

    if (SUCCEEDED(hr))
    {
        // use newInterface

        newInterface->Release();
    }
    xpsFactory->Release();
}
else
{
    // evaluate HRESULT error returned in hr
}

要件

要件
サポートされている最小のクライアント Windows 7、Windows Vista SP2 と Windows Vista 用プラットフォーム更新プログラム [デスクトップ アプリ |UWP アプリ]
サポートされている最小のサーバー Windows Server 2008 R2、Windows Server 2008 SP2 および Windows Server 2008 用プラットフォーム更新プログラム [デスクトップ アプリ |UWP アプリ]
対象プラットフォーム Windows
ヘッダー xpsobjectmodel.h

こちらもご覧ください

IXpsOMImageBrush

IXpsOMImageResource

IXpsOMObjectFactory

IXpsOMTileBrush

XML Paper Specification

XPS ドキュメント エラー

XPS_RECT