• 大小: 14.91MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-06-19
  • 语言: C/C++
  • 标签: C++  MFC  VS2008  仪表盘  

资源简介

此源码是利用C++在vs2008环境下编写,经测试运行成功。

资源截图

代码片段和文件信息

// 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

// 获得控件区域
GetClientRect (&m_rectCtrl);

CMemDCEx 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 dTickAngleRad;
double dTe

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

     文件     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.embed.manifest

     文件        984  2018-10-12 10:15  MyMeter\MyMeter\Debug\MyMeter.exe.embed.manifest.res

     文件        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个文件信息

评论

共有 条评论