ID2D1Factory::CreateTransformedGeometry(ID2D1Geometry*,constD2D1_MATRIX_3X2_F*,ID2D1TransformedGeometry**) metode (d2d1.h)
Mengubah geometri yang ditentukan dan menyimpan hasilnya sebagai objek ID2D1TransformedGeometry .
Sintaks
HRESULT CreateTransformedGeometry(
ID2D1Geometry *sourceGeometry,
const D2D1_MATRIX_3X2_F *transform,
ID2D1TransformedGeometry **transformedGeometry
);
Parameter
sourceGeometry
Jenis: [in] ID2D1Geometry*
Geometri yang akan diubah.
transform
Jenis: [in] const D2D1_MATRIX_3X2_F*
Transformasi yang akan diterapkan.
transformedGeometry
Jenis: [out] ID2D1TransformedGeometry**
Ketika metode ini kembali, berisi alamat penunjuk ke objek geometri baru yang diubah. Geometri yang diubah menyimpan hasil transformasi sourceGeometry berdasarkan transformasi.
Nilai kembali
Jenis: HRESULT
Jika metode ini berhasil, metode akan mengembalikan S_OK. Jika tidak, kode kesalahan HRESULT akan dikembalikan.
Keterangan
Seperti sumber daya lainnya, geometri yang diubah mewarisi ruang sumber daya dan kebijakan utas pabrik yang membuatnya. Objek ini tidak dapat diubah.
Saat membelai geometri yang diubah dengan metode DrawGeometry , lebar goresan tidak terpengaruh oleh transformasi yang diterapkan pada geometri. Lebar goresan hanya dipengaruhi oleh transformasi dunia.
Contoh
Contoh berikut membuat ID2D1RectangleGeometry, lalu menggambarnya tanpa mengubahnya. Ini menghasilkan output yang ditunjukkan dalam ilustrasi berikut.
hr = m_pD2DFactory->CreateRectangleGeometry(
D2D1::RectF(150.f, 150.f, 200.f, 200.f),
&m_pRectangleGeometry
);
Contoh berikutnya menggunakan target render untuk menskalakan geometri dengan faktor 3, lalu menggambarnya. Ilustrasi berikut menunjukkan hasil menggambar persegi tanpa transformasi dan dengan transformasi; memperhatikan bahwa stroke lebih tebal setelah transformasi, meskipun ketebalan stroke adalah 1.
// Transform the render target, then draw the rectangle geometry again.
m_pRenderTarget->SetTransform(
D2D1::Matrix3x2F::Scale(
D2D1::SizeF(3.f, 3.f),
D2D1::Point2F(175.f, 175.f))
);
m_pRenderTarget->DrawGeometry(m_pRectangleGeometry, m_pBlackBrush, 1);
Contoh berikutnya menggunakan metode CreateTransformedGeometry untuk menskalakan geometri dengan faktor 3, lalu menggambarnya. Ini menghasilkan output yang ditunjukkan dalam ilustrasi berikut. Perhatikan bahwa, meskipun persegi panjang lebih besar, stroke-nya belum meningkat.
// Create a geometry that is a scaled version
// of m_pRectangleGeometry.
// The new geometry is scaled by a factory of 3
// from the center of the geometry, (35, 35).
hr = m_pD2DFactory->CreateTransformedGeometry(
m_pRectangleGeometry,
D2D1::Matrix3x2F::Scale(
D2D1::SizeF(3.f, 3.f),
D2D1::Point2F(175.f, 175.f)),
&m_pTransformedGeometry
);
// Replace the previous render target transform.
m_pRenderTarget->SetTransform(D2D1::Matrix3x2F::Identity());
// Draw the transformed geometry.
m_pRenderTarget->DrawGeometry(m_pTransformedGeometry, m_pBlackBrush, 1);
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Windows |
Header | d2d1.h |
Pustaka | D2d1.lib |
DLL | D2d1.dll |