Fungsi DrvPlgBlt (winddi.h)
Fungsi DrvPlgBlt menyediakan kemampuan transfer blok bit putar antara kombinasi permukaan yang dikelola perangkat dan yang dikelola GDI.
Sintaks
BOOL DrvPlgBlt(
[in, out] SURFOBJ *psoTrg,
[in, out] SURFOBJ *psoSrc,
[in, optional] SURFOBJ *psoMsk,
[in] CLIPOBJ *pco,
[in, optional] XLATEOBJ *pxlo,
[in, optional] COLORADJUSTMENT *pca,
[in, optional] POINTL *pptlBrushOrg,
[in] POINTFIX *pptfx,
[in] RECTL *prcl,
[in, optional] POINTL *pptl,
[in] ULONG iMode
);
Parameter
[in, out] psoTrg
Penunjuk ke struktur SURFOBJ yang menggambarkan permukaan untuk menggambar.
[in, out] psoSrc
Penunjuk ke struktur SURFOBJ yang menjelaskan sumber untuk operasi transfer blok bit.
[in, optional] psoMsk
Penunjuk ke struktur SURFOBJ opsional yang mewakili masker untuk sumbernya. Ini didefinisikan oleh peta logika, yang merupakan bitmap dengan satu bit per piksel.
Masker ini membatasi area sumber yang disalin. Masker memiliki rop4 implisit 0xCCAA, yang berarti sumber harus disalin di mana pun masker adalah satu, tetapi tujuannya harus dibiarkan sendirian di mana pun masker nol.
Jika parameter ini NULL, rop4 secara implisit 0xCCCC, yang berarti sumber harus disalin di mana-mana di persegi panjang sumber.
Masker selalu cukup besar untuk memuat sumber yang relevan; pemiringan tidak perlu.
[in] pco
Penunjuk ke struktur CLIPOBJ yang membatasi area tujuan yang akan dimodifikasi. Fungsi GDI menghitung wilayah klip sebagai sekumpulan persegi panjang.
Jika memungkinkan, GDI menyederhanakan kliping yang terlibat. Tidak seperti fungsi DrvBitBlt , DrvPlgBlt dapat dipanggil dengan satu persegi panjang kliping. Ini mencegah kesalahan pembulatan dalam mengklip output.
[in, optional] pxlo
Penunjuk ke struktur XLATEOBJ yang menentukan bagaimana indeks warna diterjemahkan antara permukaan sumber dan target. XLATEOBJ juga dapat dikueri untuk menemukan warna RGB untuk indeks sumber apa pun. Jika pxloNULL, tidak diperlukan terjemahan.
Transfer blok bit putar berkualitas tinggi diperlukan untuk menginterpolasi warna.
[in, optional] pca
Penunjuk ke struktur COLORADJUSTMENT yang menentukan nilai penyesuaian warna yang akan diterapkan ke bitmap sumber sebelum meregangkan bit. Untuk informasi selengkapnya tentang struktur ini, lihat dokumentasi Microsoft Windows SDK.
[in, optional] pptlBrushOrg
Penunjuk ke struktur BRUSHOBJ yang menunjukkan asal sikat halftone. Driver perangkat yang menggunakan kuas halftone harus menyelaraskan piksel kiri atas pola kuas dengan titik ini pada permukaan perangkat.
[in] pptfx
Penunjuk ke tiga struktur POINTFIX yang menentukan parallelogram di permukaan tujuan. Mendefinisikan pptfx[0] sebagai A, pptfx[1] sebagai B, dan pptfx[2] sebagai C. A, B, dan C mendefinisikan tiga simpul dari parallelogram. Verteks implisit keempat diberikan sebagai:
D = B + C − A
DrvPlgBlt tidak pernah dipanggil dengan kerah A, B, dan C.
[in] prcl
Penunjuk ke struktur RECTL yang menentukan area yang akan disalin, dalam sistem koordinat permukaan sumber. Titik-titik persegi panjang sumber diurutkan dengan baik. DrvPlgBlt tidak akan pernah diberi persegi panjang sumber kosong.
[in, optional] pptl
Penunjuk ke struktur POINTL yang menentukan piksel mana dalam masker yang diberikan sesuai dengan piksel kiri atas di persegi panjang sumber. Abaikan parameter ini jika tidak ada psoMsk yang ditentukan.
[in] iMode
Menentukan bagaimana piksel sumber digabungkan untuk mendapatkan piksel output. Nilai ini bisa menjadi salah satu dari yang berikut ini:
Nilai | Makna |
---|---|
BLACKONWHITE | Pada transfer blok bit yang menyusut, piksel harus dikombinasikan dengan operasi AND. Pada transfer blok bit peregangan, piksel harus direplikasi. |
COLORONCOLOR | Pada transfer blok bit yang menyusut, piksel yang cukup harus diabaikan sehingga piksel tidak perlu digabungkan. Pada transfer blok bit peregangan, piksel harus direplikasi. |
HALFTONE | Driver dapat menggunakan grup piksel di permukaan output untuk perkiraan terbaik warna atau tingkat abu-abu input. |
WHITEONBLACK | Pada transfer blok bit yang menyusut, piksel harus dikombinasikan dengan operasi OR. Pada transfer blok bit peregangan, piksel harus direplikasi. |
Metode WHITEONBLACK, BLACKONWHITE, dan COLORONCOLOR memberikan kompatibilitas untuk aplikasi lama, tetapi tidak menghasilkan hasil terbaik untuk permukaan warna.
Mengembalikan nilai
DrvPlgBlt mengembalikan TRUE setelah berhasil. Jika tidak, ia melaporkan kesalahan dan mengembalikan FALSE.
Keterangan
Mirip dengan DrvStretchBlt, DrvPlgBlt memungkinkan driver perangkat untuk menulis ke bitmap GDI, terutama ketika driver dapat melakukan halftoning.
Untuk mengubah bitmap, fungsi ini melakukan transfer blok bit dari persegi panjang yang ditentukan oleh rrtl ke parallelogram apa pun. Parallelogram didefinisikan oleh pptfx, yang menunjuk ke array tiga titik.
Persegi panjang sumber di RRT dianggap sebagai persegi panjang geometris yang sudutnya dipindahkan oleh (-0,5,-0,5) dari koordinat bilangan bulat yang diberikan. Ini sama persis dengan persegi panjang sumber untuk DrvStretchBlt. Persegi panjang sumber selalu diurutkan dengan baik.
Sudut kiri atas persegi panjang sumber dipetakan ke titik pertama, A. Sudut kanan atas persegi panjang sumber dipetakan ke titik kedua, B. Sudut kiri bawah persegi panjang sumber dipetakan ke titik ketiga, C. Sudut kanan bawah persegi panjang sumber dipetakan ke titik implisit dalam parallelogram yang ditentukan dengan memperlakukan tiga titik yang diberikan sebagai vektor dan komputasi:
D = B + C - A
Perhatikan bahwa blt peregangan dapat dinyatakan persis sebagai blt parallelogram, tetapi koordinat yang diberikan untuk tujuan akan memiliki bagian pecahan 0,5.
DrvPlgBlt bersifat opsional untuk driver grafis. Ini disediakan hanya untuk jenis rotasi tertentu. Driver harus memanggil EngPlgBlt jika DrvPlgBlt dipanggil untuk melakukan operasi yang tidak didukungnya.
Persyaratan
Target Platform | Desktop |
Header | winddi.h (termasuk Winddi.h) |