Seite 1 von 1

[WinApi]CreateBitmap probleme

Verfasst: 26.03.2010, 10:58
von Ingrater
Ich will einem Button ein Bitmap verpassen um eine Farbe anzuzeigen die der User voher ausgewählt hat. Dummerweise verstehe ich überhaupt nicht wie ich die Daten strukturieren muss um ein richtig farbiges Bitmap zu erhalten. Der folgende Code sollte ein weißes Bitmap erzeugen, erzeugt aber ein Schwarzes. Ich habs auch schon mit rot, etc probiert, funktioniert auch ich, ergebnis wieder Schwarz. Was mache ich falsch? Es kann doch nicht so schwer sein ein einfarbiges Bitmap zu erzeugen und es anzeigen zu lassen.

Code: Alles auswählen

              int linesize = 10 * 3; //30

              boost::scoped_array<byte> BmpData(new byte[linesize*10]);
              for(int y=0;y<10;y++){
                for(int x=0;x<10*3;x+=3){
                  BmpData[y*linesize+x] = 0xFF; //self->_Color & 0xFF;
                  BmpData[y*linesize+x+1] = 0xFF; //(self->_Color >> 8) & 0xFF;
                  BmpData[y*linesize+x+2] = 0xFF; //(self->_Color >> 16) & 0xFF;
                }
              }
              HBITMAP bitmap = CreateBitmap(10,10,3,8,BmpData.get());
              SendMessage(GetDlgItem(hDlg,IDC_BTN7),BM_SETIMAGE,(WPARAM)IMAGE_BITMAP,(LPARAM)bitmap);

Re: [WinApi]CreateBitmap probleme

Verfasst: 26.03.2010, 11:45
von jgl
Hi,

siehe mal in der MSDN, unter CreateBitmap.
Dort wird das doch erklärt, hast Du das schon gecheckt?

http://msdn.microsoft.com/en-us/library/ms906571.aspx

Hatte auch mal dieses Problem, kann dir aber jetzt nicht genau helfen. Weiß nur das es etwas "umständlich" ist.

Gruß

Re: [WinApi]CreateBitmap probleme

Verfasst: 26.03.2010, 12:32
von Ingrater
Hm das hilft mir nicht wirklich weiter, in dem Beispiel Blitten die ja ein Bitmap auf den Bildschrim und das ist ja nicht was ich tun will. Außerdem verwenden sie auch CreateCompatibleBitmap. Ich will ja einfach ein Bitmap mit bestimmter größe und Farbe erzeugen und einem Button zuweisen.

Re: [WinApi]CreateBitmap probleme

Verfasst: 26.03.2010, 12:58
von Dirk Schulz
Hi,

wie hier zu erkennen ist, wird bei 8Bit Bittiefe auf eine Farbtabelle zugegriffen, die es bei dir nicht gibt.

Da du sowieso dreimal 8Bit (RGB) deklarierst, wäre es logisch die Bittiefe auf 24 zu setzen. ;)

Ich hoffe das löst dein Problem.