如何直接设置位图(CBitmap)内存数据并显示出来?
我生成了一个CBitmap对象和它的数据内存区,把数据区颜色设置好以后装入位图,然后把CBitmap对象通过CompatipleDC显示。程序运行结果是,什么也没有,空白。请高手分析一下问题在哪里。
源码:
BITMAP bm;
CBitmap Bitmap;
Bitmap.CreateBitmap(300,300,1,24,NULL); //创建24位位图
Bitmap.GetObject(sizeof(BITMAP),&bm);
unsigned char *pData=
new unsigned char [bm.bmHeight*bm.bmWidthBytes];
for (int y=0;y<bm.bmHeight;y++)
{
for (int x=0;x<bm.bmWidth;x++)
{
pData[x*3+y*bm.bmWidthBytes] = 0;
pData[x*3+1+y*bm.bmWidthBytes] = 0;
pData[x*3+2+y*bm.bmWidthBytes] = 255; //像素红色
}
}
Bitmap.SetBitmapBits(bm.bmHeight * bm.bmWidthBytes, pData);
delete[] pData;
CDC MemDC;
MemDC.CreateCompatibleDC(pDC);
CBitmap *pOldBitmap=MemDC.SelectObject(&Bitmap);
pDC->BitBlt(0,0,bm.bmWidth,bm.bmHeight,&MemDC,0,0,SRCCOPY);
MemDC.SelectObject(pOldBitmap);