Dela via


Device-Dependent bitmappar

Enhetsberoende bitmappar (DDB) beskrivs med hjälp av en enda struktur, BITMAP- struktur. Medlemmarna i den här strukturen anger bredd och höjd för en rektangulär region i bildpunkter. bredden på matrisen som mappar poster från enhetspaletten till bildpunkter. och enhetens färgformat, när det gäller färgplan och bitar per pixel. Ett program kan hämta färgformatet för en enhet genom att anropa funktionen GetDeviceCaps och ange lämpliga konstanter. Observera att en DDB inte innehåller färgvärden. i stället är färgerna i ett enhetsberoende format. Mer information finns i Color in Bitmaps. Eftersom varje enhet kan ha en egen uppsättning färger kanske en DDB som skapats för en enhet inte visas bra på en annan enhet.

Om du vill använda en DDB i en enhetskontext måste den ha färgorganisationen för enhetskontexten. Därför kallas en DDB ofta för en kompatibel bitmapp och den har vanligtvis bättre GDI-prestanda än en DIB. Om du till exempel vill skapa en bitmapp för videominne är det bäst att använda en kompatibel bitmapp med samma färgformat som den primära skärmen. En gång i videominnet går återgivningen till bitmappen och visar den på skärmen betydligt snabbare än från en systemminnesyta eller direkt från en DIB.

Förutom att ge bättre GDI-prestanda används kompatibla bitmappar för att ta bilder (se Avbilda en avbildning ) och för att skapa bitmappar vid körning för menyer se "Skapa bitmappen" i (se Använda menyer ).

Om du vill överföra en bitmapp mellan enheter med en annan färgorganisation använder du GetDIBits för att konvertera den kompatibla bitmappen till en DIB och anropa SetDIBits eller StretchDIBits för att visa DIB för den andra enheten.

Det finns två typer av DDB:er: discardable och nondiscardable. En ignorerad DDB är en bitmapp som systemet tar bort om bitmappen inte har valts till en domänkontrollant och om systemminnet är lågt. Funktionen CreateDiscardableBitmap skapar borttagbara bitmappar. Funktionerna CreateBitmap, CreateCompatibleBitmapoch CreateBitmapIndirect skapar bitmappar som inte kan visas.

Ett program kan skapa en DDB från en DIB genom att initiera de nödvändiga strukturerna och anropa funktionen CreateDIBitmap. Att ange CBM_INIT i anropet till CreateDIBitmap motsvarar att anropa funktionen CreateCompatibleBitmap för att skapa en DDB i enhetens format och sedan anropa funktionen SetDIBits för att översätta DIB-bitarna till DDB. För att avgöra om en enhet stöder funktionen SetDIBits anropar du funktionen GetDeviceCaps och anger RC_DI_BITMAP som RASTERCAPS-flagga.