Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C / C++ / MFC
  4. how to create a DIB bitmap with a array

how to create a DIB bitmap with a array

Scheduled Pinned Locked Moved C / C++ / MFC
graphicsdata-structureshelptutorial
1 Posts 1 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • D Offline
    D Offline
    daojinliu
    wrote on last edited by
    #1

    int the function OnDraw(),I want to create a DIB bitmap using the array pData,but I am not successful,Please help me. //the array containing color information unsigned char* pData=new unsigned char[768*576]; int y=0, x=0; for(;y<576;y++) for(;x<768;x++) { pData[x*3+y*768*3]=0; pData[x*3+1+y*768*3]=0; pData[x*3+2+y*768*3]=255; } //information header BITMAPINFOHEADER FrameBmi; FrameBmi.biSize=sizeof(BITMAPINFOHEADER); FrameBmi.biPlanes=1; FrameBmi.biCompression=BI_RGB; FrameBmi.biClrImportant=0; FrameBmi.biSizeImage=768*576*3; FrameBmi.biClrUsed=0; FrameBmi.biBitCount=24; FrameBmi.biWidth=768; FrameBmi.biHeight=576; FrameBmi.biXPelsPerMeter = 0; FrameBmi.biYPelsPerMeter =0; //file header BITMAPFILEHEADER pf; pf.bfType=0x4d42; //"BM" pf.bfSize=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+sizeof(char[768*576]); pf.bfOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER); pf.bfReserved1=0; pf.bfReserved2=0; //BITMAPINFOHEADER LPBITMAPINFO lpbmi=(LPBITMAPINFO)GlobalAlloc(GMEM_FIXED,sizeof(BITMAPINFOHEADER)); ASSERT(lpbmi); lpbmi->bmiHeader.biSize=FrameBmi.biSize; lpbmi->bmiHeader.biPlanes=FrameBmi.biPlanes; lpbmi->bmiHeader.biCompression=FrameBmi.biCompression; lpbmi->bmiHeader.biClrImportant=FrameBmi.biClrImportant; lpbmi->bmiHeader.biSizeImage=FrameBmi.biSizeImage; lpbmi->bmiHeader.biClrUsed=FrameBmi.biClrUsed; lpbmi->bmiHeader.biBitCount=FrameBmi.biBitCount; lpbmi->bmiHeader.biWidth=FrameBmi.biWidth; lpbmi->bmiHeader.biHeight=FrameBmi.biHeight; lpbmi->bmiHeader.biXPelsPerMeter=FrameBmi.biXPelsPerMeter; lpbmi->bmiHeader.biYPelsPerMeter=FrameBmi.biYPelsPerMeter; lpbmi->bmiColors=NULL; //创建DIB位图 CBitmap *OldBitmap; HBITMAP bmp =::CreateDIBitmap((HDC)pDC,&FrameBmi,CBM_INIT,pData,lpbmi, DIB_RGB_COLORS); ASSERT(bmp); // CBitmap bitmap; bitmap.Attach(bmp); CDC dcComp; dcComp.CreateCompatibleDC(pDC); OldBitmap=dcComp.SelectObject(&bitmap); BITMAP bm; bitmap.GetObject(sizeof(BITMAP),&bm); // draw bitmap pDC->BitBlt(0,0,768,576,&dcComp,0,0,SRCCOPY); dcComp.SelectObject(OldBitmap); delete [] pData; GlobalFree(lpbmi); help me!

    1 Reply Last reply
    0
    Reply
    • Reply as topic
    Log in to reply
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes


    • Login

    • Don't have an account? Register

    • Login or register to search.
    • First post
      Last post
    0
    • Categories
    • Recent
    • Tags
    • Popular
    • World
    • Users
    • Groups