setDIbitstodevice Turbo C ++

时间:2011-07-05 08:08:59

标签: c++

我使用的程序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,图片显示也会改变,但我这样做了,我什么都得不到。

请建议,谢谢。

1 个答案:

答案 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