MFC畫二維動態圖表[GDI]
源博客:http://www.codeproject.com/Articles/9350/2D-Animated-Charts
源代碼:http://download.csdn.net/detail/nuptboyzhb/4202051
簡介:CGraphObject是由CWnd類派生出來,因此,CGraphObject類是一個窗口類;即,每個圖表都是一個窗口;因此,每一個圖表的創建,應該放在OnCreate函數或OnInitialUpdate函數中;其應用過程,與窗口類型的控件(如CButton)非常類似;
應用:
1. 將相關的.h和.cpp文件復制到工程目錄中,并載入到工程;
[GraphObject.h GraphObject.cpp]
[MathParams.h]
[2DLineGraph.h 2DLineGraph.cpp]
[2DBarGraph.h 2DBarGraph.cpp]
[2DPieGraph.h 2DPieGraph.cpp]
2. 在類所在的頭文件中,包含其相應的頭文件;#include "GraphObject.h"并定義相應的資源ID窗口;
3. 為類增加圖表類型的指針作為其成員變量;
CGraphObject* m_pGraphObject1;
//……一下詳見代碼
4. 在View類的OnInitialUpdate()函數中,初始化這些圖表窗口,或對話框的OnInitDialog()函數;或Oncreate函數;(注意:視圖窗口完全建立后第一個被框架調用的函數。框架在第一次調用OnDraw前會調用OnInitialUpdate)
// Create CGraphObject1 ( 2DPie graph )
m_pGraphObject1 = new CGraphObject();
//創建一個圖表窗口,大小,父窗口的指針,資源ID(自定義)
m_pGraphObject1->Create( NULL, NULL, NULL, CRect(40,20,240,220), this, ID_OBJECT_GRAPH_1, NULL );
//注意,應在頭文件中定義資源ID,如:#define ID_OBJECT_GRAPH_1 12345
// Create graph and set graph parameters
m_pGraphObject1->CreateGraph( GT_2DPIE );//創建一個二維餅狀圖
m_pGraphObject1->SetGraphBackgroundColor( RGB(255,255,255) );//設置背景顏色
m_pGraphObject1->SetGraphTitle( "2DPie No. 1" );//設置標題
m_pGraphObject1->SetGraphSubtitle( "animation - none" );//設置子標題
m_pGraphObject1->SetGraphTitleShadow( FALSE );//標題無陰影
m_pGraphObject1->SetGraphSubtitleShadow( FALSE );//子標題無陰影
m_pGraphObject1->SetGraphTitleColor( RGB(128,128,128) );//設置標題顏色
m_pGraphObject1->SetGraphSubtitleColor( RGB(96,96,96) );//設置子標題顏色
//設置注釋的背景顏色
m_pGraphObject1->SetGraphLegendBackgroundColor( RGB(208,208,208) );
// Add graph segments
//為餅形圖添加數據段(百分比,顏色,名程)
m_pGraphObject1->Add2DPieGraphSegment( 40, RGB(255,0,0), "Seg_1" );
m_pGraphObject1->Add2DPieGraphSegment( 25, RGB(0,255,0), "Seg_2" );
m_pGraphObject1->Add2DPieGraphSegment( 15, RGB(0,0,255), "Seg_3" );
m_pGraphObject1->Add2DPieGraphSegment( 5, RGB(255,0,255), "Seg_4" );
m_pGraphObject1->Add2DPieGraphSegment( 8, RGB(0,255,255), "Seg_5" );
m_pGraphObject1->Add2DPieGraphSegment( 7, RGB(255,255,0), "Seg_6" );
// 設置圖像動畫
m_pGraphObject1->SetGraphAnimation( FALSE, AT_PIE_DRAW );
5. 在View類的析構函數中,刪除成員變量的指針;
m_pGraphObject1->DestroyWindow();//關閉窗口
delete m_pGraphObject1;//刪除指針
注意:本人將MathParams.h進行了修改,新增了
#pragma comment(lib,"Gdi32.lib")
#pragma comment(lib,"Msimg32.lib")
并將MathParams.h被三個圖形的.cpp文件中包含
將其封裝到Dll動態鏈接庫中
源代碼:http://download.csdn.net/detail/nuptboyzhb/4205148
封裝后,只需要將[2DGraph.lib][ 2DGraph.dll][ GraphObject.h]這三個文件拷貝到工程目錄中即可,在需要用到的地方只需要包含其頭文件即可;
#include "GraphObject.h"
#pragma comment(lib,"2DGraph.lib")
然后,下面的編程和上述3-5步驟中相同;
RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成