次の方法で共有


ID2D1Brush::SetTransform メソッド

ブラシに適用する変換を設定します。

構文

void SetTransform(
  [ref]  const D2D1_MATRIX_3X2_F &transform
);

パラメーター

戻り値

This は値を返しません。

解説

ブラシで描画する際には、レンダー ターゲットの座標空間で描画を行います。ブラシは、描画するオブジェクトに合わせて自動的に位置が調整されることはありません。既定では、ブラシはレンダー ターゲットの原点 (0, 0) から描画を開始します。

ID2D1LinearGradientBrush で定義されたグラデーションを対象領域に "移動" するには、グラデーションの始点と終点を設定します。同様に、ID2D1RadialGradientBrush で定義されたグラデーションは、その中心と半径を変更することで移動できます。

ID2D1BitmapBrush のコンテンツを描画する領域に配置するには、SetTransform メソッドを使用して目的の場所にビットマップを移動できます。この変換が影響するのはブラシのみです。レンダー ターゲットによって描画されたその他のコンテンツには影響しません。

次の図は、ID2D1BitmapBrush を使用して (100, 100) にある四角形を塗りつぶした場合の結果を示しています。左の図は、ブラシを変換せずに四角形を塗りつぶした結果を示しています。つまり、ビットマップがレンダー ターゲットの原点で描画されています。その結果、四角形にはビットマップの一部しか表示されません。

右の図は、コンテンツが右方向へ 50 ピクセル、下方向へ 50 ピクセル移動するように ID2D1BitmapBrush を変換した結果を示しています。これで、ビットマップによって四角形が塗りつぶされました。

 

変換したブラシで描画した四角形を示すスクリーン ショット

 

次のコード例は、上図の右側のダイアグラムに示した変換を作成する方法を示しています。最初に ID2D1BitmapBrush に移動を適用し、ブラシを X 軸で右方向へ 50 ピクセル、Y 軸で下方向へ 50 ピクセル移動します。次に、ID2D1BitmapBrush を使用して、左上隅が (100, 100)、右下隅が (200, 200) の四角形を塗りつぶします。

  // Create the bitmap to be used by the bitmap brush.
if (SUCCEEDED(hr))
{
    hr = LoadResourceBitmap(
        m_pRenderTarget,
        m_pWICFactory,
        L"FERN",
        L"Image",
        &m_pBitmap
        );
   
}
  if (SUCCEEDED(hr))
{
    hr = m_pRenderTarget->CreateBitmapBrush(
        m_pBitmap,
        &m_pBitmapBrush
        );
}
  D2D1_RECT_F rcTransformedBrushRect = D2D1::RectF(100, 100, 200, 200);

 // Demonstrate the effect of transforming a bitmap brush.
 m_pBitmapBrush->SetTransform(
     D2D1::Matrix3x2F::Translation(D2D1::SizeF(50,50))
     );

 // To see the content of the rcTransformedBrushRect, comment
 // out this statement.
 m_pRenderTarget->FillRectangle(
     &rcTransformedBrushRect, 
     m_pBitmapBrush
     );

 m_pRenderTarget->DrawRectangle(rcTransformedBrushRect, m_pBlackBrush, 1, NULL);

要件

クライアントの最小要件

Windows 7, Windows Vista SP2 および Windows Vista 用のプラットフォーム更新プログラム

サーバーの最小要件

Windows Server 2008 R2, Windows Server 2008 SP2 および Windows Server 2008 用のプラットフォーム更新プログラム

ヘッダー

D2d1.h

ライブラリ

D2d1.lib

DLL

D2d1.dll

参照

ID2D1Brush

ブラシの概要