如何创建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);
[解决办法]
学习了