资源简介

一个3D效果可以实时变化的柱状图类。实现任意指定个数,随时删除或者增加,并自动计算柱状图位置及宽度,可以指定柱状图标题、颜色、高度等等

资源截图

代码片段和文件信息

// Coordinates.cpp : implementation file
//

#include “stdafx.h“
#include “HistogramTest.h“
#include “Coordinates.h“


// CCoordinates

IMPLEMENT_DYNAMIC(CCoordinates CWnd)

CCoordinates::CCoordinates()
{
   m_Min=0;
   m_Max=300;
   m_DivisionLable=40;//文字显示间隔
   DivisionTick=20;   
}

CCoordinates::~CCoordinates()
{
}


BEGIN_MESSAGE_MAP(CCoordinates CWnd)
//  ON_WM_PAINT()
END_MESSAGE_MAP()

void 
CCoordinates::Create(CDC* pDCCRect rect)
{
  CPen cooPen;
  CPen* old_cooPen;
  //绘制XY轴和箭头
  cooPen.CreatePen(PS_SOLID2DEFAULT_COLOR);
  old_cooPen=pDC->Selectobject(&cooPen);
  pDC->MoveTo(00);
  pDC->LineTo(0rect.Height()-Origin_Y*2);
  pDC->MoveTo(00);
  pDC->LineTo(rect.Width()-Origin_X*20);
  pDC->MoveTo(0rect.Height()-Origin_Y*2);
  pDC->LineTo(-3rect.Height()-Origin_Y*2-10);
  pDC->MoveTo(0rect.Height()-Origin_Y*2);
  pDC->LineTo(3rect.Height()-Origin_Y*2-10);
  pDC->Selectobject(old_cooPen);
  cooPen.Deleteobject();
  //绘制刻度线
  for (int temp=DivisionTick;temp<(m_Max-m_Min);)
  {
    pDC->MoveTo(3temp);
    pDC->LineTo(-5temp);
    temp+=DivisionTick;
  }
  //绘制辅助线
  CPen pen;
  CPen* oldpen;
  pen.CreatePen(PS_DOT1RGB(505050));
  oldpen=pDC->Selectobject(&pen);
  pDC->MoveTo(15DivisionTick/2);
  pDC->LineTo(15m_Max-m_Min-10);
  CRgn rgn;
  CPoint ptVertex[4];
  ptVertex[0].x=0;
  ptVertex[0].y=0;
  ptVertex[1].x=15;
  ptVertex[1].y=DivisionTick/2;
  ptVertex[2].x=rect.Width()-Origin_X*2;
  ptVertex[2].y=DivisionTick/2;
  ptVertex[3].x=rect.Width()-Origin_X*2;
  ptVertex[3].y=0;
  rgn.CreatePolygonRgn(ptVertex4ALTERNATE);
  pDC->FillRgn(&rgn&CBrush(RGB(100100100)));
  for (int temp=DivisionTick;temp<(m_Max-m_Min);)
  {
    pDC->MoveTo(0temp);
    pDC->LineTo(15temp+DivisionTick/2);
    pDC->MoveTo(15temp+DivisionTick/2);
    pDC->LineTo(rect.Width()-Origin_X*2temp+DivisionTick/2);
    temp+=DivisionTick;
  }
  pDC->Selectobject(oldpen);
  //绘制显示标识文字
  CFont font;
  CFont* old_font;
  font.CreatePointFont(65 “Arial“ pDC);
  old_font=pDC->Selectobject(&font);
  CString str;
  for (int temp=0;temp<(m_Max-m_Min);)
  {
    str.Format(“%d“temp+m_Min);
    pDC->DrawText(strCRect(-40temp+5-5temp-5)DT_RIGHT);
    temp+=m_DivisionLable;
  }
  pDC->Selectobject(old_font);
  pen.Deleteobject();
  font.Deleteobject();
}

/**
* @fn SetRange
* @brief      设置Y轴显示范围
* @param[in]  min 最小值
* @param[in]  min 最大值
* @return     执行结果
*/
BOOL CCoordinates::SetRange(int min int max)
{
  m_Min=min;
  m_Max=max;
  return TRUE;
}

/**
* @fn GetRange
* @brief      获取Y轴显示范围
* @param[out] min 最小值
* @param[out] min 最大值
* @return     执行结果
*/
BOOL CCoordinates::GetRange(int& min int& max)
{
  min=m_Min;
  max=m_Max;
  return TRUE;
}

/**
* @fn SetDivisionsPerLabel
* @brief      设置标Y轴标签的显示间隔(多少值一个标签)
* @param[in]  value 最小值
* @return     执行结果
*/
BOOL CCoordinates::SetDivisionsPerLabel(int value)
{
  m_Div

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        904  2009-10-09 13:53  HistogramTest(3D)\HistogramTest\HistogramTest.sln

    ..A..H.     28672  2009-10-21 15:01  HistogramTest(3D)\HistogramTest\HistogramTest.suo

     文件       3686  2009-10-06 21:41  HistogramTest(3D)\HistogramTest\HistogramTest\Coordinates.cpp

     文件        641  2009-10-06 21:41  HistogramTest(3D)\HistogramTest\HistogramTest\Coordinates.h

     文件       7532  2009-10-09 10:58  HistogramTest(3D)\HistogramTest\HistogramTest\Debug\BuildLog.htm

     文件       3087  2009-10-06 23:04  HistogramTest(3D)\HistogramTest\HistogramTest\Histogram.cpp

     文件        473  2009-10-06 21:44  HistogramTest(3D)\HistogramTest\HistogramTest\Histogram.h

     文件       1807  2009-10-03 21:35  HistogramTest(3D)\HistogramTest\HistogramTest\HistogramTest.cpp

     文件        688  2009-10-06 22:55  HistogramTest(3D)\HistogramTest\HistogramTest\HistogramTest.h

     文件       5951  2009-10-09 09:03  HistogramTest(3D)\HistogramTest\HistogramTest\HistogramTest.vcproj

     文件       1423  2009-10-21 15:01  HistogramTest(3D)\HistogramTest\HistogramTest\HistogramTest.vcproj.20090921-1544.Administrator.user

     文件       1427  2009-10-06 23:17  HistogramTest(3D)\HistogramTest\HistogramTest\HistogramTest.vcproj.7EF026834E43418.Administrator.user

     文件       2026  2009-10-06 12:13  HistogramTest(3D)\HistogramTest\HistogramTest\HistosContainer.h

     文件       2999  2009-09-29 10:19  HistogramTest(3D)\HistogramTest\HistogramTest\ReadMe.txt

     文件      21630  2005-09-23 09:25  HistogramTest(3D)\HistogramTest\HistogramTest\res\HistogramTest.ico

     文件        369  2009-09-29 10:19  HistogramTest(3D)\HistogramTest\HistogramTest\res\HistogramTest.rc2

     文件        144  2009-09-29 10:19  HistogramTest(3D)\HistogramTest\HistogramTest\stdafx.cpp

     文件       2489  2009-09-29 10:19  HistogramTest(3D)\HistogramTest\HistogramTest\stdafx.h

     文件       9790  2009-10-21 15:01  HistogramTest(3D)\HistogramTest\HistogramTest\Release\BuildLog.htm

     文件        877  2009-10-09 10:52  HistogramTest(3D)\HistogramTest\HistogramTest\HistogramTestDlg.h

     文件        915  2009-10-09 10:52  HistogramTest(3D)\HistogramTest\HistogramTest\resource.h

     文件       4872  2009-10-09 10:57  HistogramTest(3D)\HistogramTest\HistogramTest\HistogramTestDlg.cpp

     文件      58952  2009-10-09 10:57  HistogramTest(3D)\HistogramTest\HistogramTest\HistogramTest.aps

     文件       5316  2009-10-09 10:57  HistogramTest(3D)\HistogramTest\HistogramTest\HistogramTest.rc

     文件       9234  2009-10-09 10:58  HistogramTest(3D)\HistogramTest\HistogramTest\HistosContainer.cpp

     文件    1822920  2009-10-09 10:58  HistogramTest(3D)\HistogramTest\debug\HistogramTest.ilk

     目录          0  2009-10-06 23:04  HistogramTest(3D)\HistogramTest\HistogramTest\Debug

     目录          0  2009-10-02 22:26  HistogramTest(3D)\HistogramTest\HistogramTest\res

     目录          0  2009-10-09 09:03  HistogramTest(3D)\HistogramTest\HistogramTest\Release

     目录          0  2009-10-09 09:04  HistogramTest(3D)\HistogramTest\release

............此处省略7个文件信息

评论

共有 条评论