Metode ID2D1Brush::SetTransform(constD2D1_MATRIX_3X2_F&) (d2d1.h)

Mengatur transformasi yang diterapkan ke kuas.

Sintaks

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

Parameter

[ref] transform

Jenis: const D2D1_MATRIX_3X2_F

Transformasi yang akan diterapkan pada kuas ini.

Nilai kembali

Tidak ada

Keterangan

Ketika Anda melukis dengan kuas, itu melukis di ruang koordinat target render. Kuas tidak secara otomatis memposisikan diri untuk menyelaraskan dengan objek yang dicat; secara default, mereka mulai melukis di asal (0, 0) dari target render.

Anda dapat "memindahkan" gradien yang ditentukan oleh ID2D1LinearGradientBrush ke area target dengan mengatur titik awal dan titik akhirnya. Demikian juga, Anda dapat memindahkan gradien yang ditentukan oleh ID2D1RadialGradientBrush dengan mengubah tengah dan radiinya.

Untuk menyelaraskan konten ID2D1BitmapBrush ke area yang dicat, Anda dapat menggunakan metode SetTransform untuk menerjemahkan bitmap ke lokasi yang diinginkan. Transformasi ini hanya mempengaruhi kuas; tidak memengaruhi konten lain yang digambar oleh target render.

Ilustrasi berikut menunjukkan efek menggunakan ID2D1BitmapBrush untuk mengisi persegi panjang yang terletak di (100, 100). Ilustrasi di ilustrasi kiri menunjukkan hasil mengisi persegi panjang tanpa mengubah kuas: bitmap digambar pada asal target render. Akibatnya, hanya sebagian bitmap yang muncul di persegi panjang.

Ilustrasi di sebelah kanan menunjukkan hasil transformasi ID2D1BitmapBrush sehingga kontennya digeser 50 piksel ke kanan dan 50 piksel ke bawah. Bitmap sekarang mengisi persegi panjang.

Ilustrasi dua kotak, satu dicat dengan bitmap tanpa kuas yang diubah dan satu dicat dengan kuas yang diubah

Contoh

Contoh kode berikut menunjukkan cara membuat transformasi yang diperlihatkan dalam diagram yang tepat dalam ilustrasi sebelumnya. Pertama terapkan terjemahan ke ID2D1BitmapBrush, pindahkan kuas 50 piksel ke kanan di sepanjang sumbu x dan 50 piksel di sepanjang sumbu y. Kemudian gunakan ID2D1BitmapBrush untuk mengisi persegi panjang yang memiliki sudut kiri atas di (100, 100) dan sudut kanan bawah di (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);

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 7, Windows Vista dengan SP2 dan Pembaruan Platform untuk Windows Vista [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows Server 2008 R2, Windows Server 2008 dengan SP2 dan Pembaruan Platform untuk Windows Server 2008 [aplikasi desktop | Aplikasi UWP]
Target Platform Windows
Header d2d1.h
Pustaka D2d1.lib
DLL D2d1.dll

Lihat juga

Gambaran Umum Brush

ID2D1Brush