資源簡(jiǎn)介
此源碼是利用C++在vs2008環(huán)境下編寫,經(jīng)測(cè)試運(yùn)行成功。
代碼片段和文件信息
//?Meter.cpp?:?implementation?file
//
#include?“stdafx.h“?
#include?“Meter.h“
#include?“math.h“
#include?“MemDCEx.h“
#ifdef?_DEBUG
#define?new?DEBUG_NEW
#undef?THIS_FILE
static?char?THIS_FILE[]?=?__FILE__;
#endif
#define?PT_NUM?50
/////////////////////////////////////////////////////////////////////////////
//?CMeter
CMeter::CMeter()
{
m_nStartAngleDeg?=?225;
m_nEndAngleDeg?=?315;
m_nTicks?=?10;
m_nSubTicks?=?5;
m_dMaxValue?=?100.0;
m_dMinValue?=?0.0;
m_dCurrentValue?=?00.0;
m_nScaleDecimals?=?0;
m_nValueDecimals?=?1;
m_colorNeedle?=?RGB(255?0?0);
m_strUnits?=?_T(“(KV)“);
m_bColorTick?=?FALSE;
//?顏色表格
m_colorTable[0]?=?RGB(17725599);
m_colorTable[1]?=?RGB(0?2550);
m_colorTable[2]?=?RGB(01230);
m_colorTable[3]?=?RGB(230248?38);
m_colorTable[4]?=?RGB(253?138?29);
m_colorTable[5]?=?RGB(255?0?0);
}
CMeter::~CMeter()
{
}
BEGIN_MESSAGE_MAP(CMeter?CStatic)
//{{AFX_MSG_MAP(CMeter)
ON_WM_PAINT()
ON_WM_SIZE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
//?CMeter?message?handlers
void?CMeter::OnPaint()?
{
CPaintDC?dc(this);?//?device?context?for?painting
//?獲得控件區(qū)域
GetClientRect?(&m_rectCtrl);
CMemDCEx?memDC(&dc?&m_rectCtrl);
//?選取圓盤邊框半徑
m_nRadiusframe?=?max(m_rectCtrl.Height()?m_rectCtrl.Width())*9/21;
//?獲得儀表盤中心點(diǎn)
m_ptMeterCenter?=?m_rectCtrl.CenterPoint();
m_ptMeterCenter.y?+=?m_nRadiusframe/10;
//繪制儀表盤
if(m_dcBackground.GetSafeHdc()==?NULL||?(m_bitmapBackground.m_hobject?==?NULL))
{
m_dcBackground.CreateCompatibleDC(&dc);
m_bitmapBackground.CreateCompatibleBitmap(&dc?m_rectCtrl.Width()? m_rectCtrl.Height())?;
m_pBitmapOldBackground?=?m_dcBackground.Selectobject(&m_bitmapBackground)?;
DrawMeterBackground(&m_dcBackground?m_rectCtrl);
}
memDC.BitBlt(0?0?m_rectCtrl.Width()?m_rectCtrl.Height()?
???????????&m_dcBackground?0?0?SRCCOPY)?;
//?繪制指針
DrawNeedle(&memDC);
DrawNode(&memDC);
DrawValue(&memDC);
//?Do?not?call?CStatic::OnPaint()?for?painting?messages
}
void?CMeter::DrawMeterBackground(CDC?*pDC?CRect?&rect)
{
int?nInnerRadius?=?m_nRadiusframe*8/10; //?內(nèi)圓弧半徑
m_nCenterRadius?=?m_nRadiusframe/20; //?中心園半徑大小
int?nframe?=?m_nRadiusframe/18; //?邊框厚度
double?dstepTickDeg?=?(360.0+m_nStartAngleDeg-m_nEndAngleDeg)/(m_nTicks*m_nSubTicks); //?刻度步進(jìn)角度
int?nSubTickR?=?nInnerRadius+(m_nRadiusframe-2*nframe-nInnerRadius)/2;
double?dDeg?=?(m_nStartAngleDeg+360.0-m_nEndAngleDeg)/(TABNUM*PT_NUM);
?
CRect?rectPanelrectInnerPanel;
CPen?penDraw?*pPenOld;
CFont?*pFontOld;
CBrush?brushFill?*pBrushOld;
POINT?ptStart?ptEnd?ptInnerStart?ptInnerEnd;
CPoint?pointInner[BOUNDARY_POINTS]?ptGroup1[PT_NUM*TABNUM+1]?ptGroup2[PT_NUM*TABNUM+1];
CPoint?ptRgn[PT_NUM*2+2];
CPoint?pttemp;
CString?strtemp;
double?dRadPerDeg;
double?dTickAngleRad;
double?dTe
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件?????179712??2018-10-12?10:15??MyMeter\Debug\MyMeter.exe
?????文件????1214212??2018-10-12?10:15??MyMeter\Debug\MyMeter.ilk
?????文件????4697088??2018-10-12?10:15??MyMeter\Debug\MyMeter.pdb
?????文件??????11890??2018-10-12?10:15??MyMeter\MyMeter\Debug\BuildLog.htm
?????文件??????76477??2018-10-12?10:15??MyMeter\MyMeter\Debug\Meter.obj
?????文件?????????65??2018-10-12?10:15??MyMeter\MyMeter\Debug\mt.dep
?????文件????????920??2018-10-12?10:15??MyMeter\MyMeter\Debug\MyMeter.exe.em
?????文件????????984??2018-10-12?10:15??MyMeter\MyMeter\Debug\MyMeter.exe.em
?????文件????????861??2018-10-12?10:15??MyMeter\MyMeter\Debug\MyMeter.exe.intermediate.manifest
?????文件??????26305??2018-10-12?10:15??MyMeter\MyMeter\Debug\MyMeter.obj
?????文件???41222144??2018-10-12?10:15??MyMeter\MyMeter\Debug\MyMeter.pch
?????文件??????69600??2018-10-12?10:15??MyMeter\MyMeter\Debug\MyMeter.res
?????文件??????43581??2018-10-12?10:15??MyMeter\MyMeter\Debug\MyMeterDlg.obj
?????文件?????570349??2018-10-12?10:15??MyMeter\MyMeter\Debug\stdafx.obj
?????文件????1870848??2018-10-12?10:15??MyMeter\MyMeter\Debug\vc90.idb
?????文件????3207168??2018-10-12?10:15??MyMeter\MyMeter\Debug\vc90.pdb
?????文件???????3294??2018-10-11?16:43??MyMeter\MyMeter\MemDCEx.h
?????文件??????16681??2018-10-12?10:12??MyMeter\MyMeter\Meter.cpp
?????文件???????2835??2018-10-12?10:11??MyMeter\MyMeter\Meter.h
?????文件?????105036??2018-10-12?10:07??MyMeter\MyMeter\MyMeter.aps
?????文件???????1666??2018-10-11?16:26??MyMeter\MyMeter\MyMeter.cpp
?????文件????????451??2018-10-11?16:26??MyMeter\MyMeter\MyMeter.h
?????文件???????5242??2018-10-12?10:07??MyMeter\MyMeter\MyMeter.rc
?????文件???????5663??2018-10-11?16:51??MyMeter\MyMeter\MyMeter.vcproj
?????文件???????1427??2018-10-12?10:15??MyMeter\MyMeter\MyMeter.vcproj.MQKZDKMJPSXNYL5.Administrator.user
?????文件???????4394??2018-10-12?10:10??MyMeter\MyMeter\MyMeterDlg.cpp
?????文件????????763??2018-10-12?10:00??MyMeter\MyMeter\MyMeterDlg.h
?????文件???????2737??2018-10-11?16:26??MyMeter\MyMeter\ReadMe.txt
????.......?????67777??2007-11-28?16:21??MyMeter\MyMeter\res\MyMeter.ico
?????文件????????363??2018-10-11?16:26??MyMeter\MyMeter\res\MyMeter.rc2
............此處省略15個(gè)文件信息
評(píng)論
共有 條評(píng)論