求教:如何将二维数组用图像显示 出来
水瓶06 2010-05-31 05:33:01 我程序中得到了一个比较大的二维数组,256*256的,想用图像的形式把它显示在一个对话框里,
在网上搜索后用了下面的代码:但是显示的不对,
int iWidth, iHeight, iBytesWidth;
iWidth = 256;
iHeight = 256;
iBytesWidth = (iWidth % 4) ? (iWidth / 4 + 1) * 4 : iWidth;
HANDLE hMem = GlobalAlloc(GMEM_MOVEABLE, iBytesWidth * iHeight * 3);
BYTE *Image = (BYTE*)GlobalLock(hMem);
for(i=0;i<16;i++) //应该是这里赋值的问题,但是为什么错了呢,应该怎样呢?
for(j=0;j<16;j++)
{
*(Image+i*iBytesWidth+j*3)=int(255*arry0[i][j]);
*(Image+1+i*iBytesWidth+j*3)=int(255*arry0[i][j]);
*(Image+2+i*iBytesWidth+j*3)=int(255*arry0[i][j]);
}
BITMAPINFO bmi;
ZeroMemory(&bmi, sizeof(BITMAPINFO));
bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
bmi.bmiHeader.biWidth = iWidth;
bmi.bmiHeader.biHeight = iHeight;
bmi.bmiHeader.biPlanes = 1;
bmi.bmiHeader.biBitCount = 24;
bmi.bmiHeader.biCompression = BI_RGB;
::SetDIBitsToDevice(dc.GetSafeHdc(), 0, 0, iWidth, iHeight, 0, 0, 0, iHeight, Image, &bmi, DIB_RGB_COLORS);
GlobalUnlock(hMem);
GlobalFree(hMem);