Device-Dependent bitmaps
Apparaatafhankelijke bitmaps (DB's) worden beschreven met behulp van één structuur, de BITMAP structuur. De leden van deze structuur geven de breedte en hoogte van een rechthoekig gebied in pixels op; de breedte van de matrix waarmee vermeldingen van het apparaatpalet worden toegewezen aan pixels; en de kleurnotatie van het apparaat, in termen van kleurvlakken en bits per pixel. Een toepassing kan de kleurindeling van een apparaat ophalen door de functie GetDeviceCaps aan te roepen en de juiste constanten op te geven. Houd er rekening mee dat een DDB geen kleurwaarden bevat; In plaats daarvan hebben de kleuren een apparaatafhankelijke indeling. Zie Kleur in Bitmapsvoor meer informatie. Omdat elk apparaat een eigen set kleuren kan hebben, wordt een DDB die voor één apparaat is gemaakt, mogelijk niet goed weergegeven op een ander apparaat.
Als u een DDB in een apparaatcontext wilt gebruiken, moet deze de kleurorganisatie van die apparaatcontext hebben. Een DDB wordt daarom vaak een compatibele bitmap genoemd en heeft meestal betere GDI-prestaties dan een DIB. Als u bijvoorbeeld een bitmap voor videogeheugen wilt maken, kunt u het beste een compatibele bitmap met dezelfde kleurindeling gebruiken als het primaire beeldscherm. Eenmaal in het videogeheugen zijn rendering naar de bitmap en het weergeven ervan op het scherm aanzienlijk sneller dan van een systeemgeheugenoppervlak of rechtstreeks vanuit een DIB.
Naast het inschakelen van betere GDI-prestaties, worden compatibele bitmaps gebruikt om afbeeldingen vast te leggen (zie Een afbeelding vastleggen ) en om bitmaps te maken tijdens runtime voor menu's zie 'De bitmap maken' in (zie Menu's gebruiken).
Als u een bitmap wilt overdragen tussen apparaten met verschillende kleurenorganisatie, gebruikt u GetDIBits- om de compatibele bitmap te converteren naar een DIB en SetDIBits- of StretchDIBits- om de DIB weer te geven naar het tweede apparaat.
Er zijn twee soorten DB's: verwijderbaar en niet-toe te passen. Een verwijderbare DDB is een bitmap die het systeem negeert als de bitmap niet is geselecteerd in een DC en als het systeemgeheugen laag is. De functie CreateDiscardableBitmap maakt verwijderbare bitmaps. De CreateBitmap, CreateCompatibleBitmapen CreateBitmapIndirect-functies maken niet-toepasbare bitmaps.
Een toepassing kan een DDB maken op basis van een DIB door de vereiste structuren te initialiseren en de CreateDIBitmap functie aan te roepen. Het opgeven van CBM_INIT in de aanroep naar CreateDIBitmap- komt overeen met het aanroepen van de functie CreateCompatibleBitmap om een DDB te maken in de indeling van het apparaat en vervolgens de setDIBits--functie aan te roepen om de DIB-bits te vertalen naar de DDB. Als u wilt bepalen of een apparaat de functie SetDIBits ondersteunt, roept u de functie GetDeviceCaps aan, waarbij u RC_DI_BITMAP opgeeft als de vlag RASTERCAPS.