ID2D1Brush::SetTransform (constD2D1_MATRIX_3X2_F&) 方法 (d2d1.h)

設定套用至筆刷的轉換。

語法

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

參數

[ref] transform

類型: const D2D1_MATRIX_3X2_F

要套用至此筆刷的轉換。

傳回值

備註

當您使用筆刷繪製時,它會在轉譯目標的座標空間中繪製。 筆刷不會自動定位自己,使其與所繪製的物件對齊;根據預設,它們會開始在轉譯目標的原點 (0、0) 繪製。

您可以藉由設定其起點和終點,將 ID2D1LinearGradientBrush 定義的漸層「移動」至目標區域。 同樣地,您可以藉由變更其中心與弧度來移動 ID2D1RadialGradientBrush 所定義的漸層。

若要將 ID2D1BitmapBrush 的內容對齊所繪製的區域,您可以使用 SetTransform 方法將點陣圖轉譯為所需的位置。 此轉換只會影響筆刷;它不會影響轉譯目標所繪製的任何其他內容。

下圖顯示使用 ID2D1BitmapBrush 填滿位於 (100, 100) 的矩形的效果。 左圖上的圖例顯示填滿矩形的結果,而不轉換筆刷:位圖是在轉譯目標的原點繪製。 因此,只有一部分的點陣圖會出現在矩形中。

右邊的圖例顯示轉換 ID2D1BitmapBrush 的結果,使其內容向右移位50圖元,並向下移50圖元。 位圖現在會填滿矩形。

兩個正方形的圖例,一個使用位圖繪製,沒有轉換的筆刷,另一個使用轉換的筆刷繪製

範例

下列程式代碼範例示範如何建立上圖右圖中顯示的轉換。 首先,將轉譯套用至 ID2D1BitmapBrush,將筆刷向右移動50像素,沿著 x 軸往下移動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 Vista 的 Windows 7、Windows Vista SP2 和平臺更新 [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2008 R2、Windows Server 2008 SP2 和 Platform Update for Windows Server 2008 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 d2d1.h
程式庫 D2d1.lib
Dll D2d1.dll

另請參閱

筆刷概觀

ID2D1Brush