Bagikan melalui


Fungsi DrvStretchBlt (winddi.h)

Fungsi DrvStretchBlt menyediakan kemampuan transfer blok bit yang merentang antara kombinasi permukaan yang dikelola perangkat dan yang dikelola GDI.

Sintaks

BOOL DrvStretchBlt(
  [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
);

Parameter

[in, out] psoDest

Arahkan ke struktur SURFOBJ yang mengidentifikasi permukaan untuk menggambar.

[in, out] psoSrc

Penunjuk ke struktur SURFOBJ yang menentukan sumber untuk operasi transfer blok bit.

[in, optional] psoMask

Penunjuk opsional ke struktur SURFOBJ yang mendefinisikan permukaan yang menyediakan masker untuk sumbernya. Masker didefinisikan oleh peta logika, yang merupakan bitmap dengan 1 bit per piksel.

Masker membatasi area sumber yang disalin. Jika parameter ini ditentukan, parameter ini 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.

Ketika parameter ini ADALAH NULL, ada rop4 implisit 0xCCCC, yang berarti bahwa sumber harus disalin di mana-mana di persegi panjang sumber.

Masker akan selalu cukup besar untuk memuat sumber yang relevan; pemiringan tidak perlu.

[in] pco

Penunjuk ke struktur CLIPOBJ yang membatasi area yang akan dimodifikasi di tujuan. Layanan GDI disediakan untuk menghitung wilayah klip sebagai satu set persegi panjang.

Jika memungkinkan, GDI menyederhanakan kliping yang terlibat. Namun, tidak seperti DrvBitBlt, DrvStretchBlt 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 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. (Lihat dokumentasi Microsoft Windows SDK.)

[in] pptlHTOrg

Penunjuk ke struktur POINTL yang menentukan asal sikat halftone. Driver perangkat yang menggunakan kuas halftone harus menyelaraskan piksel kiri atas pola kuas dengan titik ini pada permukaan perangkat.

[in] prclDest

Penunjuk ke struktur RECTL yang menentukan area yang akan dimodifikasi dalam sistem koordinat permukaan tujuan. Persegi panjang ini didefinisikan oleh dua titik yang belum tentu diurutkan dengan baik, yang berarti koordinat titik kedua belum tentu lebih besar dari titik pertama. Persegi panjang yang mereka jelaskan tidak menyertakan tepi bawah dan kanan. Fungsi ini tidak pernah dipanggil dengan persegi tujuan kosong.

DrvStretchBlt harus bertukar dua nilai x dan/atau dua nilai y ketika persegi panjang tujuan tidak diurutkan dengan baik.

[in] prclSrc

Penunjuk ke struktur RECTL yang menentukan area yang akan disalin dalam sistem koordinat permukaan sumber. Persegi panjang didefinisikan oleh dua titik, dan akan memetakan ke persegi panjang yang ditentukan oleh prclDest. Titik-titik persegi panjang sumber diurutkan dengan baik. Fungsi ini tidak pernah diberi persegi panjang sumber kosong.

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 harus dianggap sebagai notasi singkat untuk menentukan simpul koordinat pecahan ini.)

Tepi persegi panjang apa pun tidak pernah bersinggungan piksel, tetapi mengelilingi sekumpulan piksel. Piksel di dalam persegi panjang adalah piksel yang diharapkan untuk persegi panjang "eksklusif kanan bawah". DrvStretchBlt akan memetakan persegi panjang sumber geometris tepat ke persegi panjang tujuan geometris.

[in, optional] pptlMask

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 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.

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.

Mengembalikan nilai

Nilai yang dikembalikan adalah TRUE jika fungsi berhasil. Jika tidak, itu adalah FALSE, dan kode kesalahan dicatat.

Keterangan

DrvStretchBlt memungkinkan driver perangkat menulis ke bitmap GDI, terutama ketika driver dapat melakukan halftoning. Fungsi ini memungkinkan algoritma halftoning yang sama diterapkan ke bitmap GDI dan permukaan perangkat.

Fungsi ini dapat disediakan untuk menangani hanya bentuk peregangan tertentu, seperti dengan kelipatan bilangan bulat. Jika driver telah menghubungkan panggilan dan diminta untuk melakukan operasi yang tidak didukungnya, driver harus meneruskan data ke EngStretchBlt untuk ditangani GDI.

Jika driver ingin GDI menangani halftoning, dan ingin memastikan nilai iMode yang tepat, driver dapat menghubungkan DrvStretchBlt, mengatur iMode ke HALFTONE, dan memanggil kembali ke GDI dengan EngStretchBlt dengan nilai iMode yang ditetapkan.

DrvStretchBlt bersifat opsional untuk driver tampilan.

Persyaratan

Persyaratan Nilai
Target Platform Desktop
Header winddi.h (termasuk Winddi.h)

Lihat juga

CLIPOBJ

DrvBitBlt

EngStretchBlt

SURFOBJ

XLATEOBJ