windows - Tegning på 4-bit indekserede billeder i GDI +

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at tegne nogle grundlæggende grafik primitiver (linje, rektangel osv.) Ved hjælp af GDI + apis på 4-bit indekserede bitmaps. Jeg bruger Bitmap () funktioner til at oprette bitmappen og indlæse bitmaps.


Bitmap myBitmap(100/*width*/,100/*height*/,PixelFormat4bppIndexed/*Pixel format*/);
Graphics graphics(&myBitmap);
SolidBrush brush(Color(255,128,0,0));
graphics.FillRectangle(&brush,0,0,100,100);


Men dette virker ikke (ingen rektangel skabt).
Hvad kunne være problemet? Jeg forsøgte manuelt at bruge LockBits og ændre bitsne manuelt, det virker godt, så hvorfor virker det ikke med Graphics Gdi + -operationer.

Bedste reference


Endelig lykkedes det mig at løse mit problem. For at udføre gdi + -operationer ved hjælp af grafikobjekt på 4 bit indekseret bitmap, skal vi udføre følgende trin.



  1. Opret 4bpp HBITMAP direkte eller indlæs billede fra fil ved hjælp af LoadImage.

  2. Hvis du læser fra 4bpp-filen, skal du derefter indlæse paletten fra filen i HPALETTE-objekt.

  3. Opret desktop kompatibel dc.

  4. Vælg og realiser dig paletten i nyoprettede dc.

  5. vælg HBITMAP i din DC.

  6. Opret grafikobjekt ved hjælp af din dc.

  7. Udfør GDI + -operationer på 4bpp indekseret.



Selvom jeg ikke prøvede med 8bpp, men jeg tror, ​​at lignende operationer kan udføres på 8bpp også.


Håber det hjælper andre også.