功能设计:
实现画出函数图像(散点图,连线很简单,有最多8个图例),同时可以将图表保存下来。
头文件
/*********************************************************************************
*FileName: GraphControl
*Author: FMX
*Version: 1.0
*Date: 2014-8-22
*Description:
*Others: //其他内容说明
*Function List:
void drawBK(); //绘制背景和坐标系
void setGraphTitle(CString str); //设置图表文件的标题
void addLine(CString str); //添加曲线的图例
void addLine(CString* arr, int n); //一次添加多个图例,最大图例数量为8
void setRange(int ixl, int ixr, int iyl, int iyt); //设定逻辑坐标的范围
void addLineData(std::vector<CPoint> arr); //输入绘制点的逻辑数据
void transPos(CPoint *point, bool bIn); //逻辑坐标,物理坐标转换
void add(CString legName, std::vector<CPoint> line);//该方法可以添加完一个线条
void getBitmap(); //获取可以保存的位图文件
*History: //修改历史记录列表,每条修改记录应包含修改日期、修改者及修改内容简介
1.Date:
Author:
Modification:
2.…………
**********************************************************************************/
#pragma once
#include <vector>
// CGraphControl
class CGraphControl : public CStatic
{
DECLARE_DYNAMIC(CGraphControl)
public:
CGraphControl();
virtual ~CGraphControl();
添加的方法
/绘图所使用的方法
void drawBK(); //绘制背景和坐标系
void setGraphTitle(CString str); //
void addLine(CString str); //添加曲线的图例
void addLine(CString* arr, int n); //一次添加多个图例,最大图例数量为8
void setRange(int ixl, int ixr, int iyl, int iyt); //设定逻辑坐标的值
void addLineData(std::vector<CPoint> arr); //输入绘制点的逻辑数据
void transPos(CPoint *point, bool bIn); //逻辑坐标,物理坐标转换
void transPos(std::vector<CPoint> *arr, bool bIn);//批量转换坐标
void add(CString legName, std::vector<CPoint> line);//对于添加线条,整理逻辑,一个方法即可完成一次对线条的添加
void getBitmap(); //获取可以保存的位图文件
private:
CRect m_rect; //控件的大小
int marginL, marginR, marginT, marginB, marginInter; //分别对应于图和空间边缘的距离,最后的一个变量指的是图表的主体和图例区域间的距离。
int xl, xr, yb, yt; //坐标范围,从X轴