[原]将BITMAPINFO保存成bmp文件,以及渲染到设备
发布时间:2020-12-14 04:42:42 所属栏目:大数据 来源:网络整理
导读:/* class Image { public: Image() = delete; Image(const uint32_t _w,const uint32_t _h) :w(_w),h(_h) { data = new byte[w*h * 4]; }; ~Image() { if (data) { delete[] data; } } uint32_t w; uint32_t h; byte* data; }; */ BITMAPINFO dib; memset( d
/* class Image { public: Image() = delete; Image(const uint32_t& _w,const uint32_t& _h) :w(_w),h(_h) { data = new byte[w*h * 4]; }; ~Image() { if (data) { delete[] data; } } uint32_t w; uint32_t h; byte* data; }; */ BITMAPINFO dib; memset(&dib,0,sizeof(BITMAPINFO)); dib.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); dib.bmiHeader.biWidth = image->w; dib.bmiHeader.biHeight =-(int) image->h; dib.bmiHeader.biPlanes = 1; dib.bmiHeader.biBitCount = 32; dib.bmiHeader.biCompression = BI_RGB; dib.bmiHeader.biSizeImage = image->w * image->h * 4; BITMAPFILEHEADER fileHeader; fileHeader.bfType = 0x4d42; // BM fileHeader.bfReserved1 = 0; fileHeader.bfReserved2 = 0; fileHeader.bfSize = image->w * image->h * 4 + sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER); fileHeader.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER); CFile file; //保存到文件 if (file.Open("E:temp1.bmp",CFile::modeCreate | CFile::modeWrite)) { file.Write(&fileHeader,sizeof(BITMAPFILEHEADER)); file.Write(&dib.bmiHeader,sizeof(BITMAPINFOHEADER)); file.Write(image->data,image->w * image->h * 4); file.Close(); } //渲染到设备 SetDIBitsToDevice(this->GetDC()->GetSafeHdc(),image->w,image->h,0,image->data,&dib,DIB_RGB_COLORS); ?测试可行 参考:https://www.cnblogs.com/wangguchangqing/p/5432227.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |