资源简介
此源码是利用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.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个文件信息
- 上一篇:时空上下文跟踪STC
- 下一篇:C++操作SQL Server数据库新增 删除 修改
相关资源
- C++操作SQL Server数据库新增 删除 修改
- effective c++中文版第三版pdf
- C++ QT5教程 开发大全和教程 完整
- 基于MFC的飞秋实现
- vc++直接控制excel程序打开
- 相机标定——双目标定的MFC简单实现
- 相机标定——基于张正友标定标定法
- 基于信息熵的属性约简算法c/c++代码
- vs2010 mfc对话框五子棋小游戏
- c++钩子技术实现文件监控
- C++命名管道详解及简单案例基于VS20
- C++匿名管道详解及简单案例基于VS20
- qt编程经典书籍全 QT教程 C++ GUI Qt
- C++纯socket写的FTP服务器
- VS2010 C++ MFC简易计算器
- C++计算任意函数值 积分 线性方程组
- 网上收集的2011.12之前的绝大部分 五子
- MFC vc6.0 RSA DES MD5 加密解密算法
- PC-Lint 9.0L最新版,附带MISRA C++ 2008 p
- 《深入探索C++对象模型》中文pdf 侯捷
- DataStructuresandAlgorithmsinC++4thEditionbyAd
- 基于Opencv的相机操作代码
- 大恒相机程序
- 计算机图形学图形剪裁与变换算法的
- C++ GUI with Qt4编程-带完整书签.pdf
- MFC项目开发85个
- C++ How to Program 9th edition
- Visual+C++MFC编程教程
- C_C++ 程序员面试宝典 梁镇宇 完整扫描
- [VC.编程技术与难点剖析].辛长安.扫描
评论
共有 条评论