- 听众
- 收听
- 积分
- 196
- 主题
- 回帖
- 0
- 精华
注册时间2009-12-15
最后登录1970-1-1
该用户从未签到
|
本帖最后由 1282867270 于 2010-8-9 21:25 编辑
【专业程度较高,不喜欢就算了,看懂的自然会用,看不懂的也不要喷哦~~】
void CTestDlg::createBMP(int width,int height,const CString& path)//width:图像宽,height:图像高(单位:像素),path:保存的路径
{
        BITMAPFILEHEADER bfh={0};
        BITMAPINFOHEADER bih={0};
        int len=3*width*height;
        bfh.bfType=19778;//"BM"
        bfh.bfSize=len+54;
        /////////////////////////////
        bih.biSize=40;
        bih.biWidth=width;
        bih.biHeight=height;
        bih.biPlanes=1;
        bih.biBitCount=24;
        bih.biSizeImage=len;
        ////////////////////////////////
        UCHAR *buf=new UCHAR[len];
        memset(buf,0,len);
        UCHAR *DATA=new UCHAR[len+54];
        memset(DATA,0,len+54);
        ///////////////////////////////
        for (int i=0;i<len/3;i++)
        {
        //        buf[i*3+1]=0xff;//绿
        //        buf[i*3+2]=0xff;//红
                buf[i*3]=0xff;//蓝
        }
        UCHAR *p=DATA;
        memcpy(p,&bfh,sizeof(bfh));
        p+=sizeof(bfh);
        memcpy(p,&bih,sizeof(bih));
        p+=sizeof(bih);
        memcpy(p,buf,len);
        ///////////////////////////////
        CFile file(path,CFile::modeWrite|CFile::modeCreate);
        if (file)
        {
                file.Write(DATA,len+54);
        }
        file.Close();
        delete[] buf;
        delete[] DATA;
} |
|