Konteks Perangkat Memori

Untuk memungkinkan aplikasi menempatkan output dalam memori daripada mengirimkannya ke perangkat aktual, gunakan konteks perangkat khusus untuk operasi bitmap yang disebut konteks perangkat memori. DC memori memungkinkan sistem memperlakukan sebagian memori sebagai perangkat virtual. Ini adalah array bit dalam memori yang dapat digunakan aplikasi untuk sementara waktu untuk menyimpan data warna untuk bitmap yang dibuat pada permukaan gambar normal. Karena bitmap kompatibel dengan perangkat, DC memori juga terkadang disebut sebagai konteks perangkat yang kompatibel.

DC memori menyimpan gambar bitmap untuk perangkat tertentu. Aplikasi dapat membuat DC memori dengan memanggil fungsi CreateCompatibleDC .

Bitmap asli dalam DC memori hanyalah tempat penampung. Dimensinya adalah satu piksel per satu piksel. Sebelum aplikasi dapat mulai menggambar, aplikasi harus memilih bitmap dengan lebar dan tinggi yang sesuai ke DC dengan memanggil fungsi SelectObject . Untuk membuat bitmap dimensi yang sesuai, gunakan fungsi CreateBitmap, CreateBitmapIndirect, atau CreateCompatibleBitmap . Setelah bitmap dipilih ke dalam DC memori, sistem mengganti array bit tunggal dengan array yang cukup besar untuk menyimpan informasi warna untuk persegi panjang piksel yang ditentukan.

Ketika aplikasi meneruskan handel yang dikembalikan oleh CreateCompatibleDC ke salah satu fungsi gambar, output yang diminta tidak muncul di permukaan gambar perangkat. Sebaliknya, sistem menyimpan informasi warna untuk baris, kurva, teks, atau wilayah yang dihasilkan dalam array bit. Aplikasi dapat menyalin gambar yang disimpan dalam memori kembali ke permukaan gambar dengan memanggil fungsi BitBlt , mengidentifikasi DC memori sebagai konteks perangkat sumber dan jendela atau layar DC sebagai konteks perangkat target.

Saat menampilkan DIB atau DDB yang dibuat dari DIB pada perangkat palet, Anda dapat meningkatkan kecepatan gambar digambar dengan mengatur palet logis agar sesuai dengan tata letak palet sistem. Untuk melakukan ini, panggil GetDeviceCaps dengan nilai NUMRESERVED untuk mendapatkan jumlah warna yang dipesan dalam sistem. Kemudian panggil GetSystemPaletteEntries dan isi entri NUMRESERVED/2 pertama dan terakhir dari palet logis dengan warna sistem yang sesuai. Misalnya, jika NUMRESERVED adalah 20, Anda akan mengisi 10 entri pertama dan terakhir dari palet logis dengan warna sistem. Kemudian isi warna 256-NUMRESERVED yang tersisa dari palet logis (dalam contoh kami, 236 warna yang tersisa) dengan warna dari DIB dan atur bendera PC_NOCOLLAPSE pada masing-masing warna ini.

Untuk informasi selengkapnya tentang warna dan palet, lihat Warna. Untuk informasi selengkapnya tentang operasi bitmap dan bitmap, lihat Bitmap.