Bagikan melalui


Palet Logis

Palet logis adalah palet warna yang dibuat dan dikaitkan aplikasi dengan konteks perangkat tertentu. Palet logis memungkinkan aplikasi menentukan dan menggunakan warna yang memenuhi kebutuhan spesifiknya. Aplikasi dapat membuat sejumlah palet logis, menggunakannya untuk konteks perangkat terpisah atau beralih di antaranya untuk satu konteks perangkat. Jumlah maksimum palet yang dapat dibuat aplikasi tergantung pada sumber daya sistem.

Aplikasi membuat palet logis dengan menggunakan fungsiCreatePalette. Aplikasi ini mengisi strukturLOGPALETTE, yang menentukan jumlah entri dan nilai warna untuk setiap entri, dan kemudian aplikasi meneruskan struktur ke CreatePalette. Fungsi mengembalikan handel palet yang digunakan aplikasi di semua operasi berikutnya untuk mengidentifikasi palet. Untuk menggunakan warna di palet logis, aplikasi memilih palet ke dalam konteks perangkat dengan menggunakan fungsiSelectPalette lalu mewujudkan palet dengan menggunakan fungsi RealPalette. Warna di palet tersedia segera setelah palet logis direalisasikan.

Aplikasi harus membatasi ukuran palet logisnya hanya untuk entri yang cukup untuk mewakili warna yang diperlukan. Aplikasi tidak dapat membuat palet logis yang lebih besar dari ukuran palet maksimum, nilai yang bergantung pada perangkat. Aplikasi dapat memperoleh ukuran maksimum dengan menggunakan fungsiGetDeviceCaps untuk mengambil nilai SIZEPALETTE.

Meskipun aplikasi dapat menentukan nilai warna apa pun untuk entri tertentu dalam palet logis, tidak semua warna dapat dihasilkan oleh perangkat tertentu. Sistem tidak menyediakan cara untuk menemukan warna mana yang didukung, tetapi aplikasi dapat menemukan jumlah total warna ini dengan mengambil resolusi warna perangkat. Resolusi warna, yang ditentukan dalam bit warna per piksel, sama dengan nilai COLORRES yang dikembalikan oleh fungsiGetDeviceCaps. Perangkat yang memiliki resolusi warna 18 memiliki 262.144 kemungkinan warna. Jika aplikasi meminta warna yang tidak didukung, sistem memilih perkiraan yang sesuai.

Setelah palet logis dibuat, aplikasi dapat mengubah warna di palet dengan menggunakan fungsi SetPaletteEntries. Jika palet logis telah dipilih dan direalisasikan, mengubah palet tidak segera memengaruhi warna yang ditampilkan. Aplikasi harus menggunakan fungsi UnrealizeObject dan RealPalette untuk memperbarui warna. Dalam beberapa kasus, aplikasi mungkin perlu membatalkan pilihan, membatalkan pemilihan, memilih, dan mewujudkan palet logis untuk memastikan bahwa warna diperbarui persis seperti yang diminta. Jika aplikasi memilih palet logis ke lebih dari satu konteks perangkat, perubahan pada palet logis memengaruhi semua konteks perangkat yang dipilihnya.

Aplikasi dapat mengubah jumlah entri dalam palet logis dengan menggunakan fungsiResizePalette. Jika aplikasi mengurangi ukuran, entri yang tersisa tidak berubah. Jika aplikasi memperluas ukuran, sistem mengatur warna untuk setiap entri baru menjadi hitam (0, 0, 0) dan bendera ke nol.

Aplikasi dapat mengambil nilai warna dan bendera untuk entri dalam palet logis tertentu dengan menggunakan fungsi GetPaletteEntries. Aplikasi dapat mengambil indeks untuk entri dalam palet logis tertentu yang paling cocok dengan nilai warna tertentu dengan menggunakan fungsiGetNearestPaletteIndex.

Ketika aplikasi tidak lagi memerlukan palet logis, aplikasi dapat menghapusnya dengan menggunakan fungsiDeleteObject. Aplikasi harus memastikan palet logis tidak lagi dipilih ke dalam konteks perangkat sebelum menghapus palet.