我用CBitmap,想将本地屏幕信息发送到其他计算机上,并显示。
我的思路是首先取得本地屏幕的位图信息,然后将位图信息转换成BYTE型的数组数据进行发送,对方接收到后,在装入位图中,然后显示。问题是,我用CBitmap的GetBitmapBits()函数将数据装入BYTE型的数组时,参数要求输入要copy的字节数,我查了MSDN,好像要用它父类的GetObject()函数,但是不知道这个函数的参数怎么用,我怎么也得不到那个位图的大小啊!请指教!ps:要想达到我的目的,有没有其他好点的方法呢??
我的思路是首先取得本地屏幕的位图信息,然后将位图信息转换成BYTE型的数组数据进行发送,对方接收到后,在装入位图中,然后显示。问题是,我用CBitmap的GetBitmapBits()函数将数据装入BYTE型的数组时,参数要求输入要copy的字节数,我查了MSDN,好像要用它父类的GetObject()函数,但是不知道这个函数的参数怎么用,我怎么也得不到那个位图的大小啊!请指教!ps:要想达到我的目的,有没有其他好点的方法呢??
BITMAP bm;
bitmap.GetBitmap(&bm);
int nWidth = bm.bmWidth;
int nHeight = bm.bmHeight;
int nSize = bm.bmWidthBytes * bm.bmHeight;
BITMAP bm;
bitmap.LoadBitmap(ID_bitmap);//ID_bitmap 是你 将你要导入的图片载入到MFC中的资源号;
bitmap.GetBitmap(&bm);
int nWidth = bm.bmWidth;
int nHeight = bm.bmHeight;
int nSize = bm.bmWidthBytes * bm.bmHeight;
typedef struct tagBITMAPINFOHEADER{ // bmih
DWORD biSize;
LONG biWidth;
LONG biHeight;
WORD biPlanes;
WORD biBitCount
DWORD biCompression;
DWORD biSizeImage;
LONG biXPelsPerMeter;
LONG biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
} BITMAPINFOHEADER;
m_bitmap.GetObject(sizeof(bmInfo), &bmInfo);
tufaqing的做法也对,不过:
nWidth = (bm.bmWidth+3)/4*4这是bmp图的真正宽度,
还有bmWidthBytes应该根据你的bmp是几位图再由nWidth作一次字节的转换,随便哪本图像书都有介绍
还有些4位和8位DIB是经过压缩了的。