65.9K
CodeProject 正在变化。 阅读更多。
Home

条形图控件

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.63/5 (13投票s)

2007年1月23日

CPOL

2分钟阅读

viewsIcon

74272

downloadIcon

3436

一个有用的条形图控件,派生自 CStatic。

Sample Image - BarGraph.jpg

引言

这是一个简单的条形图控件类,派生自 CStatic。它支持显示实时数据,使用任意数量的不同颜色的条形,使用刻度,以厘米和英寸为单位等等。代码使用优化的绘制,没有闪烁。我们可以更改背景颜色、文本颜色、条形颜色等,更改刻度,以及更改显示区域。

使用代码

  1. 将文件 GraphCtrl.hGraphCtrl.cpp 复制到您的项目目录,并添加到您的项目中。
  2. 在您需要使用此类的文件中包含 GraphCtrl.h
  3. CStatic 的定义更改为 CGraphCtrl
  4. 使用下面描述的函数。

方法

  • void SetUnit(CString pUnit); - 设置要显示在 Y 轴附近的单位类型字符串。
  • void SetScale(int); - 设置 Y 轴上一个单位的值。
  • int GetScale(); - 返回当前的刻度值。
  • int AddBar(int iVal, COLORREF bClr, const char* sLabel); - 在右端添加一个新条形。 bClr 是条形颜色,sLabel 是要在条形下显示的字符串。
  • int InsertBar(int index,int iVal, COLORREF bClr, const char* sLabel); - 在一个位置插入一个新条形。
  • int DeleteBar(int index); - 删除一个条形。
  • void SetBarValue(int index, int iVal, BOOL bDraw=TRUE); - 设置一个条形的值。
  • void SetBarColor(int, COLORREF, BOOL bDraw=TRUE); - 设置一个条形的颜色。
  • int GetBarValue(int iIndex); - 返回一个位置处条形的值。
  • COLORREF GetBarColor(int iIndex); - 返回一个位置处条形的颜色值。
  • void SetBGColor(COLORREF clr); - 设置图表的背景颜色。
  • COLORREF GetBGColor(); - 返回图表的背景颜色。
  • void SetAxisColor(COLORREF); - 设置图表中坐标轴线的颜色。
  • COLORREF GetAxisColor(); - 返回坐标轴颜色。
  • void SetTextColor(COLORREF); - 设置文本颜色。
  • COLORREF GetTextColor(); - 返回文本颜色。
  • int GetNumberOfBars(); - 返回条形的数量。
  • int DrawGraph(void); - 绘制图表。
  • int SetDisplayRange(int iRangeStart, int iRangeEnd); - 设置 Y 轴的显示范围。
  • void GetDisplayRange(int& iRangeStart, int& iRangeEnd); - 获取 Y 轴的显示范围。

使用示例

m_Graph.SetUnit("centi-meters"); //Sets Unit Text
m_Graph.SetScale(10); // Scale value per 1 unit
m_Graph.GetDisplayRange(0, 100); //Display from 0 to 100
for(UINT i=0;i<10;i++) 
{ 
char tmp[16]; 
sprintf(tmp, &quot;bar%d&quot;, i); 
m_Graph.AddBar(rand()%100, RGB(rand()%256, rand()%256, rand()%256), tmp); 
//Sets Random values
sprintf(tmp, &quot;%d&quot;, i); 
m_BarCombo.AddString(tmp); 
} 
m_Graph.SetBGColor(RGB(0,0,0)); 
m_Graph.SetAxisColor(RGB(255,255,255)); 
m_Graph.SetTextColor(RGB(0,0,255));
© . All rights reserved.