专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 图形/图像

c++图像保留

发布时间:2011-06-27 20:18:08 文章来源:www.iduyao.cn 采编人员:星星草
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;  
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: