c++图像保存
CWnd *pEnd=GetDlgItem(IDC_STATIC3);
CDC *pControlDC=pEnd->GetDC();
pEnd->Invalidate();
pEnd->UpdateWindow();
CPen aPen;
aPen.CreatePen(PS_SOLID, 2, RGB(255,0,0));
CPen* pOldPen = pControlDC->SelectObject(&aPen);
。。。。
pControlDC->MoveTo(point1);
pControlDC->LineTo(point2);
上述代码在一个case循环里,我用上述代码,在边框为IDC_STATIC3的组件里进行画图操作。
现在,我想添加一个保存按钮,在画完后存储这个图像为bmp,请问如何获得该图像的数据?
[解决办法]
下面这个关于BMP的格式介绍,仔细看就能看懂。
之前你或许看过,没认真看而已
http://blog.csdn.net/zhuzhu101011/article/details/1338078
下面是我用C做的,或许能当解释看下
#include <iostream>
#include <fstream>
using namespace std;
#define N 480 // 原始宽度
#define I 245 // 改变后宽度
#define M 640 // 原始长度
unsigned char b[960][1920];
int main()
{
unsigned char a[54];
unsigned char zhongzhi;
unsigned char *pt1;
float ni=(float)N/(float)I; // N/I的值
int m=(int)((float)M/ni)/1+1; // 改变后的长度值,包括边缘
float py1,py2,py3,hx1,hx2,hx3; //竖着与横着分量的值,应该小于ni
float hx4,hx5; //
int y1,y2,x1,x2; //取整的值,用来定位新像素占原像素的位置。
ifstream infile("11.bmp",ios::binary); //打开11.bmp。
if(!infile)
{cout<<"open 11.bmp error!"<<endl;
abort();
}
infile.read((char *)a,54); //读取文件头存入数组a中。
infile.seekg(54); //定位
infile.read((char *)b,921600); //读取数据存入二维数组b中。
infile.close(); //关闭
int i;
int j;
ofstream outfile("12.bmp",ios::binary); //打开12.bmp写数据
if(!outfile)
{cout<<"open 12.bmp error!"<<endl;
abort();
}