GraphicsPath::Metode Warp (gdipluspath.h)
Metode GraphicsPath::Warp menerapkan transformasi warp ke jalur ini. Metode GraphicsPath::Warp juga meratakan (dikonversi ke urutan garis lurus) jalur.
Sintaks
Status Warp(
[in] const PointF *destPoints,
[in] INT count,
[in, ref] const RectF & srcRect,
[in] const Matrix *matrix,
[in] WarpMode warpMode,
[in] REAL flatness
);
Parameter
[in] destPoints
Jenis: const PointF*
Penunjuk ke array titik yang, bersama dengan parameter srcRect , mendefinisikan transformasi warp.
[in] count
Jenis: INT
Bilangan bulat yang menentukan jumlah titik dalam array destPoints . Nilai parameter ini harus 3 atau 4.
[in, ref] srcRect
Jenis: const RectF
Referensi ke persegi panjang yang, bersama dengan parameter destPoints , mendefinisikan transformasi warp.
[in] matrix
Jenis: const Matrix*
Pilihan. Penunjuk ke objek Matriks yang mewakili transformasi yang akan diterapkan bersama dengan warp. Jika parameter ini NULL, tidak ada transformasi yang diterapkan. Nilai defaultnya adalah NULL.
[in] warpMode
Jenis: WarpMode
Opsional. Elemen enumerasi WarpMode yang menentukan jenis warp yang akan diterapkan. Nilai defaultnya adalah WarpModePerspective.
[in] flatness
Jenis: NYATA
Opsional. Angka riil yang memengaruhi jumlah segmen garis yang digunakan untuk mempertanyakan jalur asli. Nilai kecil menentukan bahwa banyak segmen garis digunakan, dan nilai besar menentukan bahwa beberapa segmen garis digunakan. Nilai defaultnya adalah FlatnessDefault, yang merupakan konstanta yang ditentukan dalam Gdiplusenums.h.
Mengembalikan nilai
Jenis: Status
Jika metode berhasil, metode mengembalikan Ok, yang merupakan elemen dari enumerasi Status .
Jika metode gagal, metode mengembalikan salah satu elemen lain dari enumerasi Status .
Keterangan
Objek GraphicsPath menyimpan kumpulan titik data yang mewakili garis dan kurva. Metode GraphicsPath::Warp mengonversi titik data tersebut sehingga hanya mewakili baris. Parameter kerataan memengaruhi jumlah baris yang disimpan. Titik data asli yang mewakili kurva hilang.
Jika parameter hitungan memiliki nilai 4, transformasi warp didefinisikan seperti yang ditunjukkan dalam tabel berikut.
Titik sumber | Titik tujuan |
---|---|
Sudut kiri atas srcRect | destPoints[0] |
Sudut kanan atas srcRect | destPoints[1] |
Sudut kiri bawah srcRect | destPoints[2] |
Sudut kanan bawah srcRect | destPoints[3] |
Transformasi yang ditentukan oleh persegi panjang sumber dan empat titik tujuan mampu memetakan persegi panjang ke kuadrilateral arbitrer yang belum tentu merupakan parallelogram.
Jika parameter hitungan memiliki nilai 3, transformasi warp didefinisikan seperti yang ditunjukkan dalam tabel berikut.
Titik sumber | Titik tujuan |
---|---|
Sudut kiri atas srcRect | destPoints[0] |
Sudut kanan atas srcRect | destPoints[1] |
Sudut kiri bawah srcRect | destPoints[2] |
Transformasi yang ditentukan oleh persegi panjang sumber dan tiga titik tujuan memetakan persegi panjang ke parallelogram.
Contoh
Contoh berikut membuat objek GraphicsPath dan menambahkan gambar tertutup ke jalur. Kode mendefinisikan transformasi warp dengan menentukan persegi panjang sumber dan array empat titik tujuan. Persegi panjang sumber dan titik tujuan diteruskan ke metode Warp . Kode menarik jalur dua kali: sekali sebelum dibersihkan dan sekali setelah dibersihkan.
VOID WarpExample(HDC hdc)
{
Graphics graphics(hdc);
// Create a path.
PointF points[] ={
PointF(20.0f, 60.0f),
PointF(30.0f, 90.0f),
PointF(15.0f, 110.0f),
PointF(15.0f, 145.0f),
PointF(55.0f, 145.0f),
PointF(55.0f, 110.0f),
PointF(40.0f, 90.0f),
PointF(50.0f, 60.0f)};
GraphicsPath path;
path.AddLines(points, 8);
path.CloseFigure();
// Draw the path before applying a warp transformation.
Pen bluePen(Color(255, 0, 0, 255));
graphics.DrawPath(&bluePen, &path);
// Define a warp transformation, and warp the path.
RectF srcRect(10.0f, 50.0f, 50.0f, 100.0f);
PointF destPts[] = {
PointF(220.0f, 10.0f),
PointF(280.0f, 10.0f),
PointF(100.0f, 150.0f),
PointF(400.0f, 150.0f)};
path.Warp(destPts, 4, srcRect);
// Draw the warped path.
graphics.DrawPath(&bluePen, &path);
// Draw the source rectangle and the destination polygon.
Pen blackPen(Color(255, 0, 0, 0));
graphics.DrawRectangle(&blackPen, srcRect);
graphics.DrawLine(&blackPen, destPts[0], destPts[1]);
graphics.DrawLine(&blackPen, destPts[0], destPts[2]);
graphics.DrawLine(&blackPen, destPts[1], destPts[3]);
graphics.DrawLine(&blackPen, destPts[2], destPts[3]);
}
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows XP, Windows 2000 Professional [hanya aplikasi desktop] |
Server minimum yang didukung | Windows 2000 Server [hanya aplikasi desktop] |
Target Platform | Windows |
Header | gdipluspath.h (termasuk Gdiplus.h) |
Pustaka | Gdiplus.lib |
DLL | Gdiplus.dll |
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk