请问如何把屏幕图象转换成32位位图 请问如何把从屏幕上截取的图象转换成一个特定色彩格式的位图,比如说32位,截取图象时屏幕分辨率不一定是32位的。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 首先,分辨率和图象的位数没关。如果我没记错的话,分辨率是指图象显示的点数,而位数是指表示每点图象颜色所用的存储空间的大小(8位.16位.24位等等)只要把bitmap按格式读出,再把比如1个字节的格式强转成4字节存回去就可以了。记得要改文件头。 要根据 GetDIBits 取得的 BITMAPINFOHEADER 判断并转换每个像素:如果 biBitCount <= 8 要通过系统调色板取回正确的32位值;如果 biBitCount == 16 or 32 && biCompression == BI_BITFIELDS,BITMAPINFO 结构的 RGBUQAD[0], RGBUQAD[1], RGBUQAD[2], 分别是 DIB 数据的 RedMask, GreenMask 和 BlueMask;如果是 16 位 R5G6B5 格式,mask 应该为 R: 0x0000F800 G: 0x000007E0 B: 0x0000001F Red = (pixel & 0x0000F800) >> 11;Green = (pixel & 0x000007E0) >> 5;Blue = (pixel & 0x0000001F);如果是 24 位,强制转换为 32 位就可以作为 RedMask, GreenMask 和 BlueMask 分别为 0x00ff0000, 0x0000ff00, 0x0000ff00 的 32 位像素了。 如何将24 位的位图或DIB强制转换为 1,2,4,位 为什么VC++程序运行过程中会弹出oracle odbc driver connect窗口 我的双缓冲定时刷新1小时后让系统非常卡,是什么资源没释放吗,代码下面 vc如何使用ode引擎 send recv 问题 如何对ComboBox进行初始化呀,错误IDC_Combo01::AddString(str)为什么不行 求助:谁有有关链码的程序 小强提问? 100分求:如何将多个obj文件合成一个obj 紧急求助: 运行成功,但是注册表代理位置只写入不完整 侯捷的深入浅出mfc中的scribble程序哪里有??急!! 如何实现点击屏幕,就得到某一个窗口中控件的句柄?
如果我没记错的话,分辨率是指图象显示的点数,而位数是指表示每点图象颜色所用的存储空间的大小(8位.16位.24位等等)只要把bitmap按格式读出,再把比如1个字节的格式强转成4字节存回去就可以了。记得要改文件头。
Red = (pixel & 0x0000F800) >> 11;
Green = (pixel & 0x000007E0) >> 5;
Blue = (pixel & 0x0000001F);如果是 24 位,强制转换为 32 位就可以作为 RedMask, GreenMask 和 BlueMask 分别为 0x00ff0000, 0x0000ff00, 0x0000ff00 的 32 位像素了。