Bagikan melalui


Fungsi DrvGradientFill (winddi.h)

Fungsi DrvGradientFill menaungi primitif yang ditentukan.

Sintaks

BOOL DrvGradientFill(
  [in, out]      SURFOBJ   *psoDest,
  [in]           CLIPOBJ   *pco,
  [in, optional] XLATEOBJ  *pxlo,
  [in]           TRIVERTEX *pVertex,
  [in]           ULONG     nVertex,
  [in]           PVOID     pMesh,
  [in]           ULONG     nMesh,
  [in]           RECTL     *prclExtents,
  [in]           POINTL    *pptlDitherOrg,
  [in]           ULONG     ulMode
);

Parameter

[in, out] psoDest

Arahkan ke struktur SURFOBJ yang mengidentifikasi permukaan untuk menggambar.

[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 . Parameter ini harus diabaikan oleh driver.

[in] pVertex

Arahkan ke array struktur TRIVERTEX, dengan setiap entri berisi informasi posisi dan warna. Struktur TRIVERTEX dijelaskan dalam dokumentasi Microsoft Windows SDK.

[in] nVertex

Menentukan jumlah struktur TRIVERTEX dalam array tempat pVertex menunjuk .

[in] pMesh

Arahkan ke array struktur yang menentukan konektivitas elemen TRIVERTEX tempat pVertex menunjuk.

Ketika persegi panjang sedang digambar, pMesh menunjuk ke array struktur GRADIENT_RECT, yang masing-masing menentukan dua elemen TRIVERTEX yang menentukan persegi panjang. Elemen TRIVERTEX dapat mewakili sepasang simpul persegi panjang yang berlawanan secara diagonal. Gambar persegi panjang bersifat eksklusif kanan bawah. TRIVERTEX dan GRADIENT_RECT didefinisikan dalam dokumentasi Windows SDK.

Ketika segitiga digambar, pMesh menunjuk ke array struktur GRADIENT_TRIANGLE, yang masing-masing menentukan tiga elemen TRIVERTEX yang menentukan segitiga. Gambar segitiga bersifat eksklusif kanan bawah. GRADIENT_TRIANGLE ditentukan dalam dokumentasi Windows SDK.

[in] nMesh

Menentukan jumlah elemen dalam array tempat pMesh menunjuk.

[in] prclExtents

Penunjuk ke struktur RECTL yang menentukan area tempat gambar gradien terjadi. Titik ditentukan dalam sistem koordinat permukaan tujuan. Parameter ini berguna dalam memperkirakan ukuran operasi gambar.

[in] pptlDitherOrg

Pointer ke struktur POINTL yang menentukan asal pada permukaan untuk dithering. Piksel kiri atas pola dither selaras dengan titik ini.

[in] ulMode

Menentukan mode gambar saat ini dan cara menginterpretasikan array yang menunjuk pMesh . Parameter ini bisa menjadi salah satu nilai berikut:

GRADIENT_FILL_RECT_H

Parameter pMesh menunjuk ke array struktur GRADIENT_RECT. Setiap persegi panjang akan dibayangi dari kiri ke kanan. Secara khusus, piksel kiri atas dan kiri bawah berwarna sama, seperti halnya piksel kanan atas dan kanan bawah.

GRADIENT_FILL_RECT_V

Parameter pMesh menunjuk ke array struktur GRADIENT_RECT. Setiap persegi panjang harus dibayangi dari atas ke bawah. Secara khusus, piksel kiri atas dan kanan atas berwarna sama, seperti halnya piksel kiri bawah dan kanan bawah.

GRADIENT_FILL_TRIANGLE

Parameter pMesh menunjuk ke array struktur GRADIENT_TRIANGLE.

Perhitungan isian gradien untuk setiap mode didokumenkan di bagian Keterangan.

Nilai kembali

DrvGradientFill mengembalikan TRUE setelah berhasil. Jika tidak, ia mengembalikan FALSE dan melaporkan kesalahan dengan memanggil EngSetLastError.

Keterangan

DrvGradientFill dapat diimplementasikan secara opsional dalam driver grafis. GDI tidak pernah memanggil fungsi ini untuk permukaan palet.

Driver menghubungkan DrvGradientFill dengan mengatur bendera HOOK_GRADIENTFILL saat memanggil EngAssociateSurface atau EngModifySurface. Jika driver telah menghubungkan DrvGradientFill dan dipanggil untuk melakukan operasi yang tidak didukungnya, driver harus memiliki GDI yang menangani operasi dengan menyatukan data dalam panggilan ke EngGradientFill.

GDI tidak akan memanggil DrvGradientFill untuk permukaan tujuan 8bpp.

Rumus untuk menghitung nilai warna pada setiap piksel primitif bergantung pada ulMode sebagai berikut:

Total kesalahan yang terakumulasi di ketiga saluran warna tidak boleh lebih dari delapan (8). Untuk informasi selengkapnya tentang kesalahan yang diizinkan, lihat Efek Khusus dalam Driver Tampilan.

Driver harus mengabaikan nilai alfa simpul, membiarkan saluran alfa tidak berubah untuk permukaan yang mendukung pencambahan alfa.

Persyaratan

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

Lihat juga

EngAssociateSurface

EngGradientFill