資源簡介
VC2010編寫的工控儀表 基于對話框 方便移植 界面相當完美 該注意的地方我都加上了注釋 方便大家觀看 我用了個定時器讓表從0到100 然后從100到0不停走動 大家要用的時候把定時器去掉 直接調用函數就可以在表上顯示對應的數據。
代碼片段和文件信息
//?Meter.cpp?:?implementation?file
//
#include?“stdafx.h“
#include?“MyMeter.h“
#include?“Meter.h“
#include?“math.h“
#include?“MemDC.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?=?0.0;//當前值
m_nScaleDecimals?=?0;
m_nValueDecimals?=?1;?//小數位數
m_colorNeedle?=?RGB(255?0?0);?//指針顏色
m_strUnits?=?_T(“bar“);
m_bColorTick?=?FALSE;
//?顏色表格
m_colorTable[0]?=?RGB(255?255???0);
m_colorTable[1]?=?RGB(??0?255???0);
m_colorTable[2]?=?RGB(255???0???0);
m_colorTable[3]?=?RGB(255183?34);
m_colorTable[4]?=?RGB(255?92?93);
}
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
//?獲得控件區域
GetClientRect?(&m_rectCtrl);
CMyMemDC?memDC(&dc?&m_rectCtrl);
//?選取圓盤邊框半徑
m_nRadiusframe?=?max(m_rectCtrl.Height()?m_rectCtrl.Width())*9/21;
//?獲得儀表盤中心點
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; //?內圓弧半徑
m_nCenterRadius?=?m_nRadiusframe/20; //?中心園半徑大小
int?nframe?=?m_nRadiusframe/18; //?邊框厚度
double?dstepTickDeg?=?(360.0+m_nStartAngleDeg-m_nEndAngleDeg)/(m_nTicks*m_nSubTicks); //?刻度步進角度
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?dTick
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2013-01-04?16:16??MyMeter\
?????目錄???????????0??2013-01-04?16:16??MyMeter\Debug\
?????文件??????179712??2013-01-04?16:05??MyMeter\Debug\MyMeter.exe
?????文件?????1365036??2013-01-04?16:05??MyMeter\Debug\MyMeter.ilk
?????文件?????5139456??2013-01-04?16:05??MyMeter\Debug\MyMeter.pdb
?????目錄???????????0??2013-01-04?16:16??MyMeter\ipch\
?????目錄???????????0??2013-01-04?16:16??MyMeter\ipch\mymeter-8c2b1b3a\
?????目錄???????????0??2013-01-04?16:16??MyMeter\MyMeter\
?????文件????59265024??2013-01-04?16:06??MyMeter\MyMeter.sdf
?????文件?????????888??2013-01-04?14:18??MyMeter\MyMeter.sln
?????文件???????23552??2013-01-04?16:06??MyMeter\MyMeter.suo
?????目錄???????????0??2013-01-04?16:16??MyMeter\MyMeter\Debug\
?????文件????????3330??2013-01-04?16:05??MyMeter\MyMeter\Debug\cl.command.1.tlog
?????文件???????68660??2013-01-04?16:05??MyMeter\MyMeter\Debug\CL.read.1.tlog
?????文件????????3048??2013-01-04?16:05??MyMeter\MyMeter\Debug\CL.write.1.tlog
?????文件???????????2??2013-01-04?16:05??MyMeter\MyMeter\Debug\li
?????文件???????????2??2013-01-04?16:05??MyMeter\MyMeter\Debug\li
?????文件???????????2??2013-01-04?16:05??MyMeter\MyMeter\Debug\li
?????文件???????????2??2013-01-04?16:05??MyMeter\MyMeter\Debug\li
?????文件???????????2??2013-01-04?16:05??MyMeter\MyMeter\Debug\li
?????文件???????????2??2013-01-04?16:05??MyMeter\MyMeter\Debug\li
?????文件????????2226??2013-01-04?16:05??MyMeter\MyMeter\Debug\li
?????文件????????5476??2013-01-04?16:05??MyMeter\MyMeter\Debug\li
?????文件????????1608??2013-01-04?16:05??MyMeter\MyMeter\Debug\li
?????文件???????76766??2013-01-04?16:05??MyMeter\MyMeter\Debug\Meter.obj
?????文件?????????762??2013-01-04?16:05??MyMeter\MyMeter\Debug\mt.command.1.tlog
?????文件?????????800??2013-01-04?16:05??MyMeter\MyMeter\Debug\mt.read.1.tlog
?????文件?????????562??2013-01-04?16:05??MyMeter\MyMeter\Debug\mt.write.1.tlog
?????文件?????????915??2013-01-04?14:48??MyMeter\MyMeter\Debug\MyMeter.exe.em
?????文件?????????980??2013-01-04?14:48??MyMeter\MyMeter\Debug\MyMeter.exe.em
?????文件?????????640??2013-01-04?16:05??MyMeter\MyMeter\Debug\MyMeter.exe.intermediate.manifest
............此處省略33個文件信息
- 上一篇:Web Api 最簡單的DEMO
- 下一篇:微處理器 CPU 的結構與性能
評論
共有 條評論