Contexten voor geheugenapparaten
Als u wilt dat toepassingen uitvoer in het geheugen plaatsen in plaats van deze naar een echt apparaat te verzenden, gebruikt u een speciale apparaatcontext voor bitmapbewerkingen die een context van een geheugenapparaat worden genoemd. Met een geheugendomeincontroller kan het systeem een deel van het geheugen behandelen als een virtueel apparaat. Het is een matrix van bits in het geheugen die een toepassing tijdelijk kan gebruiken om de kleurgegevens op te slaan voor bitmaps die op een normaal tekenoppervlak zijn gemaakt. Omdat de bitmap compatibel is met het apparaat, wordt een geheugendomeincontroller ook wel een compatibele apparaatcontextgenoemd.
In de geheugendomeincontroller worden bitmapafbeeldingen voor een bepaald apparaat opgeslagen. Een toepassing kan een geheugendomeincontroller maken door de functie CreateCompatibleDC aan te roepen.
De oorspronkelijke bitmap in een geheugendomeincontroller is gewoon een tijdelijke aanduiding. De afmetingen zijn één pixel voor één pixel. Voordat een toepassing met tekenen kan beginnen, moet deze een bitmap met de juiste breedte en hoogte selecteren in de DC door de SelectObject--functie aan te roepen. Als u een bitmap van de juiste dimensies wilt maken, gebruikt u de CreateBitmap, CreateBitmapIndirectof functie CreateCompatibleBitmap. Nadat de bitmap is geselecteerd in de geheugendomeincontroller, vervangt het systeem de matrix met één bits door een matrix die groot genoeg is om kleurinformatie op te slaan voor de opgegeven rechthoek van pixels.
Wanneer een toepassing de ingang die wordt geretourneerd door CreateCompatibleDC doorgeeft aan een van de tekenfuncties, wordt de aangevraagde uitvoer niet weergegeven op het tekenoppervlak van een apparaat. In plaats daarvan slaat het systeem de kleurinformatie op voor de resulterende lijn, curve, tekst of regio in de matrix met bits. De toepassing kan de afbeelding die in het geheugen is opgeslagen, naar een tekenoppervlak kopiëren door de functie BitBlt- aan te roepen, waarbij de geheugendomeincontroller wordt geïdentificeerd als de context van het bronapparaat en een venster of schermdomeincontroller als doelapparaatcontext.
Wanneer u een DIB of een DDB weergeeft die is gemaakt op basis van een DIB op een paletapparaat, kunt u de snelheid verbeteren waarmee de afbeelding wordt getekend door het logische palet te rangschikken zodat deze overeenkomt met de indeling van het systeempalet. Hiervoor roept u GetDeviceCaps- aan met de waarde NUMRESERVED om het aantal gereserveerde kleuren in het systeem op te halen. Roep vervolgens GetSystemPaletteEntries aan en vul de eerste en laatste NUMRESERVED/2-vermeldingen van het logische palet in met de bijbehorende systeemkleuren. Als NUMRESERVED bijvoorbeeld 20 is, vult u de eerste en laatste 10 vermeldingen van het logische palet in met de systeemkleuren. Vul vervolgens de resterende 256-NUMRESERVED kleuren van het logische palet in (in ons voorbeeld de resterende 236 kleuren) met kleuren uit de DIB en stel de PC_NOCOLLAPSE vlag in op elk van deze kleuren.
Zie Kleurenvoor meer informatie over kleuren en paletten. Zie Bitmapsvoor meer informatie over bitmaps en bitmapbewerkingen.