现有x,y 坐标值,想要画成折线图,连同坐标及说明文字一起存储成*.bmp文件。
谢谢!

解决方案 »

  1.   

    仅供参考
        CWindowDC dc(NULL);//NULL代表是桌面,this代表当前窗口
        CBitmap bm;
        int Width =  想存入BMP的位图的宽度; 
        int Height =  想存入BMP的位图的高度;
        bm.CreateCompatibleBitmap(&dc,Width,Height);
        CDC tdc;
        tdc.CreateCompatibleDC(&dc);
        CBitmap*pOld=tdc.SelectObject(&bm);
        tdc.BitBlt(0,0,Width,Height,&dc,0,0,SRCCOPY);
        tdc.SelectObject(pOld);
        BITMAP btm;
        bm.GetBitmap(&btm);
        DWORD size=btm.bmWidthBytes*btm.bmHeight;
        LPSTR lpData=(LPSTR)GlobalAlloc(GPTR,size);
        BITMAPINFOHEADER bih;
        bih.biBitCount=btm.bmBitsPixel;
        bih.biClrImportant=0;
        bih.biClrUsed=0;
        bih.biCompression=0;
        bih.biHeight=btm.bmHeight;
        bih.biPlanes=1;
        bih.biSize=sizeof(BITMAPINFOHEADER);
        bih.biSizeImage=size;
        bih.biWidth=btm.bmWidth;
        bih.biXPelsPerMeter=0;
        bih.biYPelsPerMeter=0;
        GetDIBits(dc,bm,0,bih.biHeight,lpData,(BITMAPINFO*)&bih,DIB_RGB_COLORS);
        //bm.GetBitmapBits(size,lpData);//此函数在处理5-5-5模式的16位色下会出现颜色混乱
        static int filecount=0;
        CString name = "f:\\picttest.bmp";
        BITMAPFILEHEADER bfh;
        bfh.bfReserved1=bfh.bfReserved2=0;
        bfh.bfType=((WORD)('M'<< 8)|'B');
        bfh.bfSize=54+size;
        bfh.bfOffBits=54;
        CFile bf;
        if(bf.Open(name,CFile::modeCreate|CFile::modeWrite)){
            bf.WriteHuge(&bfh,sizeof(BITMAPFILEHEADER));
            bf.WriteHuge(&bih,sizeof(BITMAPINFOHEADER));
            bf.WriteHuge(lpData,size);
            bf.Close();
        }
        GlobalFree(lpData);