⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 graph.h

📁 经过扩展的CGraph类及示例工程源代码
💻 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 + -