我使用的程序setDIbitstodevice
用于相机
我看到代码写成:
SetDIBitsToDevice( PaintBox->Canvas->Handle, 0, 0, 160, 120,
0, 0, 0, 120,
Image,
( LPBITMAPINFO )&mapHead, DIB_RGB_COLORS );
和
Image = new unsigned char [ 160 * 120 * 4 ]
我不知道这是什么意思。有人告诉我,如果我将Image
更改为其他形式的unsigned char
,图片显示也会改变,但我这样做了,我什么都得不到。
请建议,谢谢。
答案 0 :(得分:1)
unsigned char在turbo C ++中有一个字节的大小,所以'Image = new ...'行为Image分配一些内存,它是160像素宽,120像素高,4字节深。 4个字节将分别为红色,绿色,蓝色和alpha通道的一个字节(虽然这些不支持alpha通道,所以我认为这不是正确的 - 但它分配的内存超过了必要的内存,所以它不会崩溃,但它可能会浪费记忆力。)
现在,SetDIBitsToDevice获取Image中的像素并将其显示到paintbox(通过句柄)。 Tee参数是目的地的大小,依此类推(参见http://msdn.microsoft.com/en-us/library/dd162974(VS.85).aspx)。如果要拉伸位图(即更改显示的大小),请查看StretchDIBits http://msdn.microsoft.com/en-us/library/dd145121(v=VS.85).aspx。
HTH