Fungsi DrvStretchBltROP (winddi.h)
Fungsi DrvStretchBltROP melakukan transfer blok bit peregangan menggunakan ROP.
Sintaks
BOOL DrvStretchBltROP(
[in, out] SURFOBJ *psoDest,
[in, out] SURFOBJ *psoSrc,
[in, optional] SURFOBJ *psoMask,
[in] CLIPOBJ *pco,
[in, optional] XLATEOBJ *pxlo,
[in, optional] COLORADJUSTMENT *pca,
[in] POINTL *pptlHTOrg,
[in] RECTL *prclDest,
[in] RECTL *prclSrc,
[in, optional] POINTL *pptlMask,
[in] ULONG iMode,
[in] BRUSHOBJ *pbo,
[in] DWORD rop4
);
Parameter
[in, out] psoDest
Penunjuk ke struktur SURFOBJ yang menggambarkan permukaan untuk menggambar.
[in, out] psoSrc
Penunjuk ke struktur SURFOBJ yang menjelaskan permukaan sumber untuk transfer blok bit.
[in, optional] psoMask
Penunjuk ke struktur SURFOBJ yang mendefinisikan masker untuk sumbernya. Masker didefinisikan oleh peta logika, yang merupakan bitmap dengan satu bit per piksel. Biasanya, masker membatasi area yang akan dimodifikasi di permukaan tujuan. Masker ini selalu berukuran sama dengan permukaan sumber.
[in] pco
Penunjuk ke struktur CLIPOBJ yang membatasi area yang akan dimodifikasi di tujuan. Rutinitas layanan CLIPOBJ_Xxx disediakan untuk menghitung wilayah klip sebagai satu set persegi panjang.
Jika memungkinkan, GDI menyederhanakan kliping yang terlibat. Namun, tidak seperti DrvBitBlt, DrvStretchBltROP 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 akan diterjemahkan antara permukaan sumber dan target. Jika pxloNULL, tidak diperlukan terjemahan.
Struktur XLATEOBJ ini juga dapat dikueri untuk menemukan warna RGB untuk indeks sumber apa pun. Transfer blok bit peregangan berkualitas tinggi perlu menginterpolasi warna dalam beberapa kasus.
[in, optional] pca
Penunjuk ke struktur COLORADJUSTMENT yang menentukan nilai penyesuaian warna yang akan diterapkan ke bitmap sumber sebelum meregangkan bit. Untuk informasi selengkapnya, lihat dokumentasi Microsoft Windows SDK.
[in] pptlHTOrg
Penunjuk ke struktur POINTL yang mendefinisikan asal sikat halftone pada permukaan tujuan. Saat menggunakan kuas halftone, driver harus menyelaraskan piksel kiri atas kuas dengan titik ini dan mengulangi kuas sesuai dengan dimensinya. Driver harus mengabaikan parameter ini jika parameter rop4 tidak memerlukan pola.
[in] prclDest
Penunjuk ke struktur RECTL yang menentukan area persegi panjang yang akan dimodifikasi. Persegi panjang ini ditentukan dalam sistem koordinat permukaan tujuan dan didefinisikan oleh dua titik: kiri atas dan kanan bawah. Dua titik yang menentukan persegi panjang tidak selalu diurutkan dengan baik, yang berarti koordinat titik kedua tidak selalu lebih besar dari titik pertama. Driver harus bertukar dua nilai x dan/atau dua nilai y jika persegi panjang tujuan tidak diurutkan dengan baik.
Persegi panjang eksklusif kanan bawah; artinya, tepi bawah dan kanan bukan bagian dari salinan.
DrvStretchBltROP tidak pernah dipanggil dengan persegi panjang tujuan kosong.
[in] prclSrc
Penunjuk ke struktur RECTL yang menentukan area yang akan disalin. Persegi panjang ini ditentukan dalam sistem koordinat permukaan sumber dan didefinisikan oleh dua titik: kiri atas dan kanan bawah. Dua titik yang menentukan persegi panjang selalu diurutkan dengan baik.
Persegi panjang eksklusif kanan bawah; artinya, tepi bawah dan kanannya bukan bagian dari salinan.
Driver harus memetakan persegi panjang ini ke persegi panjang yang ditentukan oleh prclDest.
[in, optional] pptlMask
Penunjuk ke struktur POINTL yang menentukan piksel dalam masker tempat prclMask menunjuk . Piksel ini sesuai dengan piksel kiri atas di persegi panjang sumber tempat prclSrc menunjuk. Driver harus mengabaikan parameter ini jika tidak ada masker yang ditentukan.
[in] iMode
Menentukan bagaimana piksel sumber digabungkan untuk mendapatkan piksel output. Mode HALFTONE lebih lambat daripada mode lainnya, tetapi menghasilkan gambar berkualitas lebih tinggi. Parameter ini bisa menjadi salah satu nilai berikut:
Nilai | Makna |
---|---|
BLACKONWHITE | Pada transfer blok bit yang menyusut, piksel harus dikombinasikan dengan operasi Boolean 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 Boolean OR. Pada transfer blok bit peregangan, piksel harus direplikasi. |
[in] pbo
Penunjuk ke struktur BRUSHOBJ yang akan digunakan untuk menentukan pola transfer blok bit. Rutinitas layanan BRUSHOBJ_pvGetRbrush GDI mengambil realisasi perangkat dari kuas. Driver dapat mengabaikan parameter ini jika parameter rop4 tidak memerlukan pola.
[in] rop4
Mewakili operasi raster yang menentukan bagaimana piksel mask, pola, sumber, dan tujuan digabungkan untuk menulis piksel output ke permukaan tujuan.
Ini adalah operasi raster kuaterner, yang merupakan perpanjangan alami dari operasi Rop3 ternary biasa. Rop4 memiliki 16 bit yang relevan, yang mirip dengan 8 bit yang menentukan Rop3. (Bit redundan lainnya dari Rop3 diabaikan.) Cara paling sederhana untuk mengimplementasikan Rop4 adalah dengan mempertimbangkan 2 byte secara terpisah. Byte yang lebih rendah menentukan Rop3 yang harus dihitung di mana pun masker tempat titik psoMask adalah 1. Byte tinggi menentukan Rop3 yang dapat dihitung dan diterapkan di mana pun masker nol.
Mengembalikan nilai
DrvStretchBltROP harus mengembalikan TRUE setelah berhasil. Jika tidak, kode kesalahan akan dilaporkan dan mengembalikan FALSE.
Keterangan
Pemetaan didefinisikan oleh prclSrc dan prclDest. Titik yang ditentukan dalam prclDest dan prclSrc terletak pada koordinat bilangan bulat, yang sesuai dengan pusat piksel. Persegi panjang yang ditentukan oleh dua titik tersebut dianggap sebagai persegi panjang geometris dengan dua simpul yang koordinatnya adalah titik yang diberikan, tetapi dengan 0,5 dikurangi dari setiap koordinat. (Struktur POINTL adalah notasi singkat untuk menentukan simpul koordinat pecahan ini.)
Driver dapat secara opsional mengimplementasikan DrvStretchBltROP. Jika driver melakukan panggilan ini, driver dapat memanggil EngStretchBltROP untuk melakukan operasi blit peregangan yang tidak didukungnya.
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Desktop |
Header | winddi.h (termasuk Winddi.h) |