Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Bitmap in COLORREF - Array Packen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
20.03.2005, 12:45 Uhr
RedEagle



Hi.
Wie kann ich eine Bitmap (100×100 24Bit) in ein 2D COLORREF Array packen??
--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
20.03.2005, 12:53 Uhr
Oliver
S2-Pixelgeneral


Probier's mal mit GetDIBits
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
20.03.2005, 13:09 Uhr
RedEagle



Irgendwie verstehe ich die Funktion nicht


Soweit bin ich jetzt

C++:
HWND hWnd = FindWindow(NULL, "Test");

HDC hDC = GetDC(hWnd);
{
   COLORREF colors[100][100];
   HBITMAP hpic;
   BITMAPINFO bmpi;
  
   hpic = (HBITMAP)LoadImage(GetModuleHandle(NULL), "test.bmp", IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR | LR_LOADFROMFILE);
  
   GetDIBits(hDC, hpic, 0, 100, &bmpi, &bmpi, DIB_RGB_COLORS);
}

ReleaseDC(hWnd, hDC);
DeleteDC(hDC);



1. Ist das soweit schonmal richtig??
2. Wie bekomme ich das jetzt in ein colorref - array?
--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
20.03.2005, 13:42 Uhr
RedEagle



hab was anderes Gefunden, was ich auch eigentlich verstehe:

C++:
HDC hDC = GetDC(hWnd);
{
  int x,y;

         COLORREF array[100][100] = {0};
         FILE *bmp;
         if(bmp = fopen(".\\avatar.bmp","rb"))
         {
           BITMAPFILEHEADER bitmap_header; //Bitmap-Header
           BITMAPINFOHEADER bitmap_info;   //Bitmap-Info
           fread(&bitmap_header,sizeof(BITMAPFILEHEADER),1,bmp);
           fread(&bitmap_info,sizeof(BITMAPINFOHEADER),1,bmp);
           for(y = 0; y < bitmap_info.biHeight; y++)
           {
             for(x = 0; x < bitmap_info.biWidth; x++)
             {
               UCHAR r;
               UCHAR g;
               UCHAR b;
               fread(&r,sizeof(UCHAR),1,bmp);
               fread(&g,sizeof(UCHAR),1,bmp);
               fread(&b,sizeof(UCHAR),1,bmp);
             //Hier Daten ins Array packen ...
               array[x][y] = RGB(r,g,b);
               if(x == bitmap_info.biWidth)
               {
                 //Abschluss-Byte lesen
                 fread(&r,1,1,bmp);
               }
             }
           }
           fclose(bmp);
         }
        
        
   for(x=0; x<100; x++)
   {
    for(y=0; y<100; y++)
    {
     SetPixel(hDC, x, y, array[x][y]);
    }
   }

}

ReleaseDC(hWnd, hDC);
DeleteDC(hDC);



Allerdings stimmen die Farbwerte nicht, und das Bild steht auf dem Kopf (wenn ich es bei der Ausgabe drehe for(y=100; y>0; y++) stürtzt das Prog ab...
--
MFG RedEagle

Dieser Post wurde am 20.03.2005 um 13:43 Uhr von RedEagle editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
20.03.2005, 13:58 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


das bild steht auf dem kopf weil bei nem bitmap die reihen umgekehrt gespeichert sind...

das programm stürzt in deinem fall dann deshalb ab, weil du von 0 bis 99 laufen willst... um gekehrt dann also von 99 bis inklusive 0....
wenn die farbwerte nicht stimmen versuch mal rgb in der umgekehrten reihenfolge auszulesen... wichtig ist das die zeilenlänge immer eine durch 4 teilbare zahl ist an sonsten fügt der noch ein paar paddingbytes an und des mit dem einfach stupide weiterlesen klappt nicht sondern du musst nach jedem zeilenende erst die paddingbytes weglesen
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: