首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 平面设计 > 图形图像 >

c++图像保留

2013-01-04 
c++图像保存CWnd *pEndGetDlgItem(IDC_STATIC3)CDC *pControlDCpEnd-GetDC()pEnd-Invalidate()pEnd

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();  
    } 

热点排行