Kontexty paměťového zařízení
Chcete-li aplikacím umožnit umístit výstup do paměti, místo aby ho odesílaly do skutečného zařízení, použijte speciální kontext zařízení pro rastrové operace označované jako kontext paměti. Řadič domény paměti umožňuje systému zacházet s částí paměti jako s virtuálním zařízením. Jedná se o matici bitů v paměti, kterou může aplikace dočasně použít k ukládání barevných dat pro rastrové obrázky vytvořené na normální kreslicí ploše. Vzhledem k tomu, že rastrový obrázek je kompatibilní se zařízením, řadič domény paměti se někdy označuje také jako kompatibilní kontext zařízení.
Řadič domény paměti ukládá rastrové obrázky pro konkrétní zařízení. Aplikace může vytvořit řadič domény paměti voláním funkce CreateCompatibleDC.
Původní rastrový obrázek v řadiči domény paměti je jednoduše zástupný symbol. Jeho rozměry jsou o jeden pixel o jeden pixel. Aby aplikace mohla začít kreslit, musí vybrat rastrový obrázek s odpovídající šířkou a výškou do řadiče domény zavoláním funkce SelectObject. Chcete-li vytvořit rastrový obrázek odpovídajících dimenzí, použijte CreateBitmap, CreateBitmapIndirectnebo CreateCompatibleBitmap funkce. Po výběru rastrového obrázku do řadiče domény paměti systém nahradí jednobitovou matici dostatečně velkou maticí pro uložení informací o barvě pro zadaný obdélník pixelů.
Když aplikace předá popisovač vrácený CreateCompatibleDC do jedné z funkcí výkresu, požadovaný výstup se nezobrazí na ploše výkresu zařízení. Místo toho systém ukládá informace o barvě výsledné čáry, křivky, textu nebo oblasti v poli bitů. Aplikace může zkopírovat obrázek uložený v paměti zpět na plochu výkresu tak, že zavolá funkci BitBlt, identifikuje řadič domény paměti jako kontext zdrojového zařízení a okno nebo řadič domény obrazovky jako kontext cílového zařízení.
Při zobrazení DIB nebo DDB vytvořeného z DIB na paletovém zařízení můžete zvýšit rychlost, s jakou je obrázek vykreslen, tím, že uspořádáte logickou paletu tak, aby odpovídala rozložení systémové palety. Uděláte to tak, že zavoláte GetDeviceCaps s hodnotou NUMRESERVED, abyste získali počet rezervovaných barev v systému. Potom zavolejte GetSystemPaletteEntries a vyplňte první a poslední položky NUMRESERVED/2 logické palety odpovídajícími systémovými barvami. Pokud je například NUMRESERVED 20, vyplníte první a posledních 10 položek logické palety systémovými barvami. Potom vyplňte zbývající 256-NUMRESERVED barvy logické palety (v našem příkladu zbývající 236 barev) barvami z DIB a nastavte PC_NOCOLLAPSE příznak na každé z těchto barev.
Další informace o barvách a paletách naleznete v tématu Barvy. Další informace o bitmapách a rastrových operacích naleznete v tématu Bitmaps.