创建位图BITMAPINFO(有RGBQUAD的)
来源:互联网 发布:c语言求100以内的质数 编辑:程序博客网 时间:2024/05/21 14:54
/*''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
参数:
pTureColorBmpInfoHeader:表示 是否有现成的BITMAPINFOHEADER结构,如果有,直接用;
width 和 hight:表示 所创建位图的宽和高信息,如果pTureColorBmpInfoHeader为空,需要全部自己创建BITMAPINFOHEADER;
函数:
Create1ByteBmpHeadeInforFrom3ByteBmpHeadeInfor创建BITMAPINFO结构
(当然可以添加一个参数创建任意颜色深度的BITMAPINFOHEADER结构,
这里简单创建256色(灰度或二值化)位图)
...................................................................................................................................*/
BITMAPINFO* Create1ByteBmpHeadeInforFrom3ByteBmpHeadeInfor( BITMAPINFOHEADER *pTureColorBmpInfoHeader = NULL , int width=0, int hight=0 )
{
/*
一个像素点由一个字节表示,是有颜色表的;
BITMAPINFO 结构体是 BITMAPINFOHEADER+颜色表; 这是一个连续的空间;
颜色表 由 RGBQUAD结构体连续组成,RGBQUAD的个数有图片的位数决定,如16色位图,256色位图等等;
*/
static BITMAPINFO* lpNewBmpInfo = (BITMAPINFO *) new BYTE[ ( sizeof(BITMAPINFOHEADER) + 256*sizeof(RGBQUAD) ) ];
if ( pTureColorBmpInfoHeader != NULL )
{
memcpy( &(lpNewBmpInfo->bmiHeader) , pTureColorBmpInfoHeader, sizeof(BITMAPINFOHEADER) ); // (BITMAPINFO*)pbufBmpInfoHeader; //三字节位图没有颜色表;BITMAPINFO是BITMAPINFOHEADER+颜色表;
lpNewBmpInfo->bmiHeader.biBitCount = 8; //1字节位图;
}
else
{
memset(lpNewBmpInfo, '/0', sizeof(BITMAPINFOHEADER) + 256*sizeof(RGBQUAD) ) ;//不可以注释这句话;
(lpNewBmpInfo->bmiHeader).biSize = 40;
(lpNewBmpInfo->bmiHeader).biWidth = width;
(lpNewBmpInfo->bmiHeader).biHeight = hight;
(lpNewBmpInfo->bmiHeader).biPlanes = 1;
(lpNewBmpInfo->bmiHeader).biBitCount = 8;
/* //这些注释的 BITMAPINFOHEADER 的结构成员在创建位图的时候可以不指定;
(lpNewBmpInfo->bmiHeader).biCompression =BI_RGB; //无压缩;
(lpNewBmpInfo->bmiHeader).biSizeImage = 0; //Specifies the size, in bytes, of the image. This may be set to zero for BI_RGB bitmaps
(lpNewBmpInfo->bmiHeader).biXPelsPerMeter ;
(lpNewBmpInfo->bmiHeader).biYPelsPerMeter ;
(lpNewBmpInfo->bmiHeader).biClrUsed = 0;
(lpNewBmpInfo->bmiHeader).biClrImportant = 0;
*/
}
for( int i=0;i<256;i++)
{
lpNewBmpInfo->bmiColors[i].rgbRed=i;
lpNewBmpInfo->bmiColors[i].rgbGreen=i;
lpNewBmpInfo->bmiColors[i].rgbBlue=i;
lpNewBmpInfo->bmiColors[i].rgbReserved=0;
}
return lpNewBmpInfo;
}
- 创建位图BITMAPINFO(有RGBQUAD的)
- CreateDIBSection、BITMAPINFO、BITMAPINFOHEADER、RGBQUAD
- CreateDIBSection、BITMAPINFO、BITMAPINFOHEADER、RGBQUAD
- CreateDIBSection、BITMAPINFO、BITMAPINFOHEADER、RGBQUAD
- CreateDIBSection、BITMAPINFO、BITMAPINFOHEADER、RGBQUAD
- 关于BITMAPINFO中第二个成员RGBQUAD bmiColors[1]的有关问题
- CreateDIBSection、BITMAPINFO、BITMAPINFOHEADER、RGBQUAD - [Daliy APIs]
- BITMAPINFO结构 <windows中显示位图必备的位图信息>
- vc 位图操作 BITMAPINFO 赋值
- vc 位图操作 BITMAPINFO 赋值
- vc 位图操作 BITMAPINFO 赋值
- vc 位图操作 BITMAPINFO 赋值
- 根据BITMAPINFO获取位图数据
- vc 位图操作 BITMAPINFO 赋值
- vc 位图操作 BITMAPINFO 赋值
- RGB和RGBQUAD的区别
- RGB和RGBQUAD的区别
- RGB和RGBQUAD的区别
- 软件开发中的11个系统思维定律
- jquery 在updatepanel中的运用的幾種方式
- 删除多条数据-解决方案
- 终止onEnterFrame函数
- 启动外部程序
- 创建位图BITMAPINFO(有RGBQUAD的)
- 控制FLV视频循环播放
- AntPile简介
- cscope and silentBob
- 245455455
- Flash视频音量控制
- hibernate和ibatis
- flash图片抗锯齿的方法
- WordPress初级教程-21: Wordpress的Gravatar头像功能使用方法