我的程序在相机上使用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/

10-11 10:33