Bagikan melalui


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)

Lihat juga

DrvAlphaBlend

DrvBitBlt

DrvPlgBlt

DrvStretchBlt

DrvTransparentBlt

EngAlphaBlend

EngBitBlt

EngPlgBlt

EngStretchBlt

EngStretchBltROP

EngTransparentBlt