資源簡介
一個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個文件信息
評論
共有 條評論