我的程序在相机上使用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
,图片显示也会发生变化,但是我这样做了,但我什么也没得到。请指教,谢谢。
最佳答案
在Turbo C ++中,unsigned char具有一个字节的大小,因此'Image = new ...'行为Image分配了一些内存,该内存宽160像素,高120像素,深4字节。红色,绿色,蓝色和Alpha通道的4个字节将各为一个字节(尽管它们不支持Alpha通道,所以我认为这是不对的-但是它分配的内存超出了必要,因此不会崩溃,但这可能是浪费内存)。
现在,SetDIBitsToDevice会获取Image中的像素,并将其显示到画板中(通过手柄)。 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
关于c++ - setDIbitstodevice Turbo C++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6579600/