Posted By: Bubrak (Alencin) on 'CZprogram'
Title:     Re: DIBitmap, problemek..
Date:      Tue Jan  7 23:51:33 2003

> Bube, hlavne si precti dokumentaci, protoze s tim jak to delas hodne brzo 
> dojedes. bmiColors je opravdu jenom placeholder jak psal pivson a je to tam 

Dokumentaci si ctu dycky nejdriv, neboj. ;o) Akorat sem z toho casto zmatenej.

> proto, aby se s tim jednodus epracovalo. Ale ten kus pameti ma vypadat tak, 
> ze je BITMAPINFOHEADER nasledovany polem RGBQUADu anebo polem WORDu s 
> paletou. To co to je a hlavne kolik toho tam je zalezi na biBitCount a 
> biClrUsed v BITMAPINFOHEADER a parametrech funkci co s tim volas. Pokud
> budes 
> slepe predpokladat ze je tam jen jeden RGBQUAD tak brzo dojedes na ochranu 
> pameti...

No, vypada to spis naopak, ted sem zkusil tam narvat width*height RGBQUADu a 
hazi to exception. Na to sem ale zvyklej. ;o) Ted to jen odladit...

Potrebuju proste natahnout z disku bitmapu, prevyst ji do formatu, kterej 
potrebuju (24 bitu, bez komprese) a tudle bitmapu (jen data) pak nacist do 
pole, s kterym pak budu moct rychle pracovat (nez udajne pres GetPixel).

No a mam zatim todle:

 CBitmap vDDBitmap;
 HBITMAP hDDBitmap;
 BITMAPINFOHEADER vDDBHeader;
 BITMAPINFO vDDBInfo;
 int vDDBInitData[3];
 CClientDC dc(this);

 vDDBHeader.biSize=3*pDoc->m_panoramaCHeight*pDoc->m_panoramaCWidth;
 // predpokladam, ze 1 pixel ma 3 byty
 vDDBHeader.biWidth=pDoc->m_panoramaCWidth;
 vDDBHeader.biHeight=pDoc->m_panoramaCHeight;
 vDDBHeader.biPlanes=1;
             vDDBHeader.biBitCount=24;
             vDDBHeader.biCompression=BI_RGB;
             vDDBHeader.biSizeImage=0;
             vDDBHeader.biXPelsPerMeter =3750;
             vDDBHeader.biYPelsPerMeter =3750;
             vDDBHeader.biClrUsed =0;
             vDDBHeader.biClrImportant =0;

 RGBQUAD vRGBQuad[1];
 vRGBQuad[0].rgbRed=255;
 vRGBQuad[0].rgbGreen=255;
 vRGBQuad[0].rgbBlue=255;
 vRGBQuad[0].rgbReserved=0;
 vDDBInfo.bmiHeader=vDDBHeader;
 for (int i=0;i<pDoc->m_panoramaCWidth*pDoc->m_panoramaCHeight;i++) {
   vRGBQuad[0].rgbRed=255;
   vRGBQuad[0].rgbGreen=255;
   vRGBQuad[0].rgbBlue=255;
   vRGBQuad[0].rgbReserved=0;
   vDDBInfo.bmiColors[i]= vRGBQuad[0];
 }

 hDDBitmap=CreateDIBitmap(dc,&vDDBHeader,CBM_INIT,&vDDBInitData,&vDDBInfo,DIB_R
GB_COLORS);
 vDDBitmap.Attach(hDDBitmap);
 // mam DIBku, prevedu do ni natazenou bitmapu...


Bub

>  
> 
>           Jerry III
> 
> Enough said ...
> http://jerryiii.home.sprynet.com/mica/index.htm
 
                                            Kdo brzdi, ten ztraci.
   -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-     
       E-mail: j.kubrt@sh.cvut.cz                      ICQ: 9813416            
     HomePage: http://web.pinknet.cz/~bubrak/bubrak
   -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 

Search the boards