📄 graph.h
字号:
#if !defined(AFX_GRAPH_H__9DB68B4D_3C7C_47E2_9F72_EEDA5D2CDBB0__INCLUDED_)
#define AFX_GRAPH_H__9DB68B4D_3C7C_47E2_9F72_EEDA5D2CDBB0__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// Graph.h : header file
////本控件已增加汉语说明并修改了一定的代码,实现更优秀的界面,更强大的功能
//注意查看说明,如在使用过程中有更好的想法和创意,请把改写后的代码发送到如下
//email地址:daishaozhong@china.com,本人不胜感激!
//以下为定义坐标轴的映射模式
#define DEFAULTMODE 0 //原版本的绘图模式,y轴以像素为单位
#define RELATIVEMODE 1 //自定义的绘图模式,以设置的tickrange/tickspace为y轴全体再设置单位大小
/////////////////////////////////////////////////////////////////////////////
// CGraph window
#include "GraphSeries.h"
#include "GraphLegend.h"
class CGraph : public CStatic
{
// Construction
public:
CGraph();
CGraph(int type,int drawmode=DEFAULTMODE);
// Attributes
public:
private:
int tickSpace; //number of pixels between "y" axis ticks,y轴单元格大小(单位为像素)
CObList* graphSeries;
int graphType; //0 - bar graph, 1 - line graph, 2 - pie
int graphAlignment; //0 - horizontal, 1 - vertical
int maxHeight;
int maxWidth;
CString axisYLabel;//x轴名字
CString axisXLabel;//y轴名字
int yApexPoint;//y轴顶点坐标
int xApexPoint;
int yAxisHeight;//y轴能够到达的最大高度(RELATIVEMODE下的可见高度)(tickrange为DEFAULTMODE视图中可见高度)
int xAxisWidth;
int yTickFontSize;//y轴的单元格字体
int xTickFontSize;
int legendFontSize;//图例中的字体大小
int tickRange;//y轴最大值(单位为像素)
int seriesSize; //number of data elements to map per series(对应最多的一个系列)
CGraphLegend graphLegend;
BOOL graphHasLegend;//设置图例的标志
int legendWidth;
COLORREF dataColor[10];
int xAxisAlign; //0 - horizontal, # - degree rotation
int xAxisLabelLength;//所有x轴标签的最大长度
CString graphTitle;//所绘图形的标题
//print settings
int topMargin;
int bottomMargin;
int leftMargin;
int rightMargin;
int pGraphL, pGraphT, pGraphB, pGraphR;
// Operations
public:
void SetTickSpace(int yDist);//设置单元格逻辑大小(RELATIVEMODE模式下)||(或者DEFAULTE模式下的单元格像素数)
void SetTickRange(int maxTick);//设置y轴逻辑大小(RELATIVEMODE模式下)||(或者DEFAULTE模式下的y轴像素数)
void SetXTickFontSize(int size);
void SetYTickFontSize(int size);
void SetLegendFontSize(int size);
void DrawGraph(CDC* pDC);//使用时调用的主要函数
void AddSeries(CGraphSeries* dataSet);
void SetXAxisLabel(CString label);
void SetYAxisLabel(CString label);
void SetLegend(int datagroup, CString label);
void SetColor(int group, COLORREF groupColor);
void SetXAxisAlignment(int alignValue);
void SetGraphType(int gType);
void SetGraphTitle(CString title);
int PrintGraph(CDC *pDC, CPrintInfo* pInfo);
void SetMargins(int top, int bottom, int left, int right, int graphTop);
private:
float m_nUnits;//在relativemode下每个逻辑单位的像素数
UINT m_DrawMode;//对应DEFAULTMODE或者RELATIVEMODE;
COLORREF m_background;//窗体的背景颜色
void DrawAxis(CDC* pDC);
void DrawSeries(CDC* pDC);
void DrawLegend(CDC* pDC);
COLORREF GetColor(int group);
int GetXAxisAlignment();
void PrintLegend(CDC *pDC);
void PrintAxis(CDC *pDC);
void PrintSeries(CDC *pDC);
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CGraph)
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CGraph();
// Generated message map functions
protected:
//{{AFX_MSG(CGraph)
// NOTE - the ClassWizard will add and remove member functions here.
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_GRAPH_H__9DB68B4D_3C7C_47E2_9F72_EEDA5D2CDBB0__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -