Bagikan melalui


Fungsi DrvBitBlt (winddi.h)

Fungsi DrvBitBlt menyediakan kemampuan transfer blok bit umum antara permukaan yang dikelola perangkat, antara bitmap format standar yang dikelola GDI, atau antara permukaan yang dikelola perangkat dan bitmap format standar yang dikelola GDI.

Sintaks

BOOL DrvBitBlt(
  [in, out]      SURFOBJ  *psoTrg,
  [in, optional] SURFOBJ  *psoSrc,
  [in, optional] SURFOBJ  *psoMask,
  [in]           CLIPOBJ  *pco,
  [in, optional] XLATEOBJ *pxlo,
  [in]           RECTL    *prclTrg,
  [in, optional] POINTL   *pptlSrc,
  [in, optional] POINTL   *pptlMask,
  [in, optional] BRUSHOBJ *pbo,
  [in, optional] POINTL   *pptlBrush,
  [in]           ROP4     rop4
);

Parameter

[in, out] psoTrg

Arahkan ke struktur SURFOBJ yang menggambarkan permukaan untuk menggambar.

[in, optional] psoSrc

Penunjuk ke struktur SURFOBJ yang menjelaskan sumber untuk operasi transfer blok bit, jika diperlukan oleh parameter rop4 .

[in, optional] psoMask

Pointer ke struktur SURFOBJ yang menjelaskan permukaan yang akan digunakan sebagai masker untuk parameter rop4 . Masker adalah bitmap dengan 1 bit per piksel. Biasanya, masker digunakan untuk membatasi area yang akan dimodifikasi di permukaan tujuan. Masking dipilih dengan mengatur parameter rop4 ke nilai 0xAACC. Permukaan tujuan tidak terpengaruh jika masker 0x0000.

Masker akan cukup besar untuk menutupi persegi panjang tujuan.

Jika parameter ini NULL dan masker diperlukan oleh parameter rop4 , masker implisit dalam kuas digunakan.

[in] pco

Penunjuk ke struktur CLIPOBJ yang membatasi area yang akan dimodifikasi. Layanan GDI (CLIPOBJXxx) yang menghitung wilayah klip sebagai sekumpulan persegi panjang disediakan. Jika memungkinkan, GDI menyederhanakan kliping yang terlibat; misalnya, fungsi ini tidak pernah dipanggil dengan satu persegi panjang kliping. GDI mengklip persegi tujuan sebelum memanggil fungsi ini, membuat kliping tambahan tidak perlu.

[in, optional] pxlo

Penunjuk ke struktur XLATEOBJ yang menentukan bagaimana indeks warna harus diterjemahkan antara permukaan sumber dan tujuan. Jika pxloNULL, tidak diperlukan terjemahan.

Jika permukaan sumber dikelola palet, warnanya diwakili oleh indeks ke dalam tabel pencarian nilai RGB. Struktur XLATEOBJ dapat dikueri untuk vektor terjemahan yang akan memungkinkan driver perangkat untuk menerjemahkan indeks sumber apa pun ke dalam indeks warna untuk tujuan.

Situasinya lebih rumit ketika, misalnya, sumbernya adalah RGB, tetapi tujuannya dikelola palet. Dalam hal ini, kecocokan terdekat dengan setiap nilai RGB sumber harus ditemukan di palet tujuan. Driver dapat memanggil layanan XLATEOBJ_iXlate untuk melakukan operasi ini.

Secara opsional, driver perangkat dapat mencocokkan warna ketika palet target adalah palet perangkat default.

[in] prclTrg

Penunjuk ke struktur RECTL yang menentukan area yang akan dimodifikasi. Struktur ini menggunakan sistem koordinat permukaan tujuan. Tepi bawah dan kanan persegi ini bukan bagian dari transfer blok bit, yang berarti persegi panjang eksklusif kanan bawah.

DrvBitBlt tidak pernah dipanggil dengan persegi tujuan kosong. Dua titik yang menentukan persegi panjang selalu diurutkan dengan baik. Namun, pada sistem multimonitor persegi panjang dapat menentukan wilayah yang lebih besar dari permukaan tujuan. Driver harus berpotongan persegi panjang ini dengan permukaannya.

[in, optional] pptlSrc

Penunjuk ke struktur POINTL yang menentukan sudut kiri atas persegi panjang sumber, jika ada sumber. Parameter ini diabaikan jika tidak ada sumber.

[in, optional] pptlMask

Penunjuk ke struktur POINTL yang menentukan piksel mana dalam masker yang sesuai dengan sudut kiri atas persegi panjang sumber, jika ada sumber. Parameter ini diabaikan jika parameter psoMask adalah NULL.

[in, optional] pbo

Pointer ke struktur BRUSHOBJ yang menentukan pola untuk transfer blok bit. Layanan BRUSHOBJ_pvGetRbrush GDI dapat digunakan untuk mengambil realisasi perangkat dari kuas. Parameter ini diabaikan jika parameter rop4 tidak memerlukan pola.

[in, optional] pptlBrush

Pointer ke struktur POINTL yang mendefinisikan asal kuas di permukaan tujuan. Piksel kiri atas kuas selaras pada saat ini, dan kuas diulang sesuai dengan dimensinya. Parameter ini diabaikan jika parameter rop4 tidak memerlukan pola.

[in] rop4

Menentukan operasi raster yang menentukan bagaimana piksel mask, pola, sumber, dan tujuan digabungkan untuk menulis ke permukaan tujuan.

Ini adalah operasi raster kuaterner, yang merupakan perpanjangan dari operasi Rop3 terner. Rop4 memiliki 16 bit yang relevan, yang mirip dengan 8 bit yang menentukan Rop3. Cara paling sederhana untuk mengimplementasikan Rop4 adalah dengan mempertimbangkan 2 byte-nya secara terpisah: Byte rendah menentukan Rop3 yang harus dihitung jika masker adalah satu, dan byte tinggi menentukan Rop3 yang dapat dihitung dan diterapkan jika masker adalah 0.

Nilai kembali

DrvBitBlt mengembalikan TRUE jika operasi transfer blok bit berhasil. Jika tidak, fungsi mengembalikan FALSE, dan kode kesalahan dicatat.

Keterangan

Jika driver menghubungkan DrvBitBlt, GDI akan memanggil fungsi ini ketika perlu melakukan operasi BitBlt di mana salah satu permukaan adalah permukaan yang dikelola perangkat. Jika driver mengimplementasikan bitmap yang dikelola perangkat buram, itu harus mengaitkan DrvBitBlt; jika tidak, mengaitkan DrvBitBlt bersifat opsional. Jika driver tidak dapat menangani panggilan yang ditentukan, driver dapat melakukan panggilan balik ke mesin DIB dengan memanggil EngBitBlt.

Layanan CLIPOBJXxx GDI memungkinkan kliping dikurangi menjadi serangkaian persegi panjang kliping. Vektor terjemahan membantu dalam terjemahan indeks warna untuk palet.

Catatan Jangan dereferensi penunjuk parameter kecuali ROP menunjukkan bahwa mereka diperlukan. Misalnya, tidak pernah mendereferensikan pbo-->iSolidColor yang tidak perlu karena melakukannya untuk ROP seperti BLACKNESS dapat menyebabkan pelanggaran akses. (Aturan ini juga berlaku untuk fungsi apa pun yang menyertakan parameter MIX.)

Jika driver menerima panggilan ke fungsi ini di mana parameter rop4 diatur ke 0XCCAA, driver harus melakukan panggilan ke EngBitBlt, mengekspos permukaan perangkat sebagaimana mestinya untuk panggilan.

 
Untuk informasi selengkapnya tentang operasi raster, lihat dokumentasi Microsoft Windows SDK.

Persyaratan

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

Lihat juga

BRUSHOBJ

BRUSHOBJ_pvGetRbrush

CLIPOBJ

DrvSynchronize

EngAssociateSurface

EngBitBlt

EngCreateBitmap

EngCreateDeviceSurface

SURFOBJ

XLATEOBJ

XLATEOBJ_iXlate