首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

怎么创建CBitmap对象

2012-01-13 
如何创建CBitmap对象?例如,我有一个二维数组:BYTEa[200][300]里面存储的全是0或1,维数表示坐标。我要创建

如何创建CBitmap对象?
例如,我有一个二维数组:
  BYTE   a[200][300];
里面存储的全是0或1,维数表示坐标。我要创建一个CBitmap对象,来存储这个数组,0表示白色,1表示黑色。怎么创建这个对象啊?



[解决办法]
如果一个byte代表一个像素,那么是8位256色的位图。一般白色应该是255,黑色是0。你可以用CreateDIBSection来创建。简单的还可以用CreateCompatibleBitmap来创建位图,然后逐个像素设置颜色。
[解决办法]
我想可以这样 CBitmap pmBitmap;
pmBitmap.CreateBitmap(200,300,1,1,a);

[解决办法]
ding,相同的疑问?
[解决办法]
一个字节一个点,只有单色,浪费啊。
[解决办法]
既然是一个字节一个像素,直接创建8位位图最快了:

C/C++ code
    BYTE a[200][300];     char buffer[sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * 256] = {0};    BITMAPINFO& bif = *(BITMAPINFO*)buffer;    bif.bmiHeader.biBitCount = 8;    bif.bmiHeader.biPlanes = 1;    bif.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);    bif.bmiHeader.biWidth = 200;    bif.bmiHeader.biHeight = 300;    ((DWORD&)bif.bmiColors[0]) = 0xFFFFFF;   //色彩表,0号是白色,其他都是黑色    unsigned char* lpBits = NULL;    HBITMAP hBitmap = ::CreateDIBSection(NULL, &bif, DIB_RGB_COLORS, (void**)&lpBits, NULL, 0);    if (hBitmap)        memcpy(lpBits, a, sizeof(a));    CBitmap bitmap;    bitmap.Attach(hBitmap);
[解决办法]
学习了

热点排行