Bagikan melalui


Fungsi DrvTransparentBlt (winddi.h)

Fungsi DrvTransparentBlt menyediakan kemampuan transfer blok bit dengan transparansi.

Sintaks

BOOL DrvTransparentBlt(
  [in, out]      SURFOBJ  *psoDst,
  [in]           SURFOBJ  *psoSrc,
  [in]           CLIPOBJ  *pco,
  [in, optional] XLATEOBJ *pxlo,
  [in]           RECTL    *prclDst,
  [in]           RECTL    *prclSrc,
  [in]           ULONG    iTransColor,
  [in]           ULONG    ulReserved
);

Parameter

[in, out] psoDst

Arahkan ke struktur SURFOBJ yang mengidentifikasi permukaan target yang akan digambar.

[in] psoSrc

Arahkan ke struktur SURFOBJ yang mengidentifikasi permukaan sumber transfer blok bit.

[in] pco

Penunjuk ke struktur CLIPOBJ . Rutinitas layanan CLIPOBJ_Xxx disediakan untuk menghitung wilayah klip sebagai satu set persegi panjang. Enumerasi ini membatasi area tujuan yang dimodifikasi. Jika memungkinkan, GDI menyederhanakan kliping yang terlibat.

[in, optional] pxlo

Penunjuk ke struktur XLATEOBJ yang memberi tahu bagaimana indeks warna sumber harus diterjemahkan untuk ditulis ke permukaan target. Jika pxloNULL, tidak diperlukan terjemahan.

[in] prclDst

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. Persegi panjang eksklusif kanan bawah; artinya, tepi bawah dan kanannya bukan bagian dari transfer blok bit. Dua titik yang menentukan persegi panjang selalu diurutkan dengan baik.

DrvTransparentBlt tidak pernah dipanggil dengan persegi panjang tujuan kosong.

[in] prclSrc

Penunjuk ke struktur RECTL yang menentukan area persegi panjang 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 sumber tidak akan pernah melebihi batas permukaan sumber, sehingga tidak akan pernah menimpa permukaan sumber.

Persegi panjang ini dipetakan ke persegi tujuan yang ditentukan oleh prclDst. DrvTransparentBlt tidak pernah dipanggil dengan persegi panjang sumber kosong.

[in] iTransColor

Menentukan warna transparan fisik dalam format permukaan sumber. Untuk perangkat dengan palet, nilai ini adalah indeks palet. Untuk perangkat tanpa palet, nilai ini adalah warna RGB dalam format yang digunakan di permukaan sumber. Misalnya, jika format permukaan sumber dalam bentuk 5:6:5 RGB, nilai dalam parameter ini juga akan berada dalam bentuk yang sama.

[in] ulReserved

Dipesan; parameter ini harus diatur ke nol.

Mengembalikan nilai

DrvTransparentBlt mengembalikan TRUE setelah berhasil. Jika tidak, ia mengembalikan FALSE.

Keterangan

Anda dapat secara opsional mengimplementasikan fungsi DrvTransparentBlt dalam driver grafis.

Transfer blok bit dengan transparansi didukung antara dua permukaan yang dikelola perangkat atau antara permukaan yang dikelola perangkat dan bitmap format standar yang dikelola GDI. Penulis driver didorong untuk mendukung kasus blting dari bitmap perangkat di luar layar dalam memori video ke permukaan lain dalam memori video; semua kasus lain dapat dihukum ke EngTransparentBlt dengan sedikit penalti performa. Driver dapat melakukan panggilan punt yang melibatkan permukaan yang dikelola perangkat ke EngTransparentBlt.

Piksel apa pun pada permukaan sumber yang cocok dengan warna transparan yang ditentukan oleh iTransColor tidak disalin. Untuk penjelasan terperinci tentang blt transparan, lihat Menyalin Bitmap.

Driver tidak akan pernah dipanggil dengan sumber yang tumpang tindih dan persegi panjang tujuan pada permukaan yang sama.

Driver harus mengabaikan bit yang tidak digunakan dalam perbandingan kunci warna, seperti untuk bit yang paling signifikan ketika format bitmap adalah 5:5:5 (masing-masing lima bit merah, hijau, dan biru).

Driver menghubungkan DrvTransparentBlt dengan mengatur bendera HOOK_TRANSPARENTBLT saat memanggil EngAssociateSurface. Jika driver telah menghubungkan DrvTransparentBlt dan dipanggil untuk melakukan operasi yang tidak didukungnya, driver harus meminta GDI menangani operasi dengan meneruskan data dalam panggilan ke EngTransparentBlt.

Persyaratan

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

Lihat juga

DrvBitBlt

DrvPlgBlt

DrvStretchBlt

DrvStretchBltROP

EngAssociateSurface

EngBitBlt

EngPlgBlt

EngStretchBlt

EngStretchBltROP

EngTransparentBlt