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 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-