ID2D1Brush::SetTransform オーバーロードされたメソッド

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

オーバーロードの一覧

メソッド 説明
SetTransform(D2D1_MATRIX_3X2_F&)

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

SetTransform(D2D1_MATRIX_3X2_F*)

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

解説

ブラシで描画する際には、レンダー ターゲットの座標空間で描画を行います。ブラシは、描画するオブジェクトに合わせて自動的に位置が調整されることはありません。既定では、ブラシはレンダー ターゲットの原点 (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);

要件

ライブラリ

D2d1.lib

DLL

D2d1.dll

参照

ブラシの概要

ID2D1Brush