VC2010编写的工控仪表 界面完美 绝对可用
VC2010编写的工控仪表 基于对话框 方便移植 界面相当完美 该注意的地方我都加上了注释 方便大家观看 我用了个定时器让表从0到100 然后从100到0不停走动 大家要用的时候把定时器去掉 直接调用函数就可以在表上显示对应的数据。
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2013-01-04 16:16 MyMeter
目录 0 2013-01-04 16:16 MyMeterDebug
文件 179712 2013-01-04 16:05 MyMeterDebugMyMeter.exe
文件 1365036 2013-01-04 16:05 MyMeterDebugMyMeter.ilk
文件 5139456 2013-01-04 16:05 MyMeterDebugMyMeter.pdb
目录 0 2013-01-04 16:16 MyMeteripch
目录 0 2013-01-04 16:16 MyMeteripchmymeter-8c2b1b3a
目录 0 2013-01-04 16:16 MyMeterMyMeter
文件 59265024 2013-01-04 16:06 MyMeterMyMeter.sdf
文件 888 2013-01-04 14:18 MyMeterMyMeter.sln
文件 23552 2013-01-04 16:06 MyMeterMyMeter.suo
目录 0 2013-01-04 16:16 MyMeterMyMeterDebug
文件 3330 2013-01-04 16:05 MyMeterMyMeterDebugcl.command.1.tlog
文件 68660 2013-01-04 16:05 MyMeterMyMeterDebugCL.read.1.tlog
文件 3048 2013-01-04 16:05 MyMeterMyMeterDebugCL.write.1.tlog
文件 2 2013-01-04 16:05 MyMeterMyMeterDebuglink-cvtres.read.1.tlog
文件 2 2013-01-04 16:05 MyMeterMyMeterDebuglink-cvtres.write.1.tlog
文件 2 2013-01-04 16:05 MyMeterMyMeterDebuglink.2588-cvtres.read.1.tlog
文件 2 2013-01-04 16:05 MyMeterMyMeterDebuglink.2588-cvtres.write.1.tlog
文件 2 2013-01-04 16:05 MyMeterMyMeterDebuglink.2588.read.1.tlog
文件 2 2013-01-04 16:05 MyMeterMyMeterDebuglink.2588.write.1.tlog
文件 2226 2013-01-04 16:05 MyMeterMyMeterDebuglink.command.1.tlog
文件 5476 2013-01-04 16:05 MyMeterMyMeterDebuglink.read.1.tlog
文件 1608 2013-01-04 16:05 MyMeterMyMeterDebuglink.write.1.tlog
文件 76766 2013-01-04 16:05 MyMeterMyMeterDebugMeter.obj
文件 762 2013-01-04 16:05 MyMeterMyMeterDebugmt.command.1.tlog
文件 800 2013-01-04 16:05 MyMeterMyMeterDebugmt.read.1.tlog
文件 562 2013-01-04 16:05 MyMeterMyMeterDebugmt.write.1.tlog
文件 915 2013-01-04 14:48 MyMeterMyMeterDebugMyMeter.exe.embed.manifest
文件 980 2013-01-04 14:48 MyMeterMyMeterDebugMyMeter.exe.embed.manifest.res
文件 640 2013-01-04 16:05 MyMeterMyMeterDebugMyMeter.exe.intermediate.manifest
............此处省略33个文件信息
// 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 MyMeterDebug
文件 179712 2013-01-04 16:05 MyMeterDebugMyMeter.exe
文件 1365036 2013-01-04 16:05 MyMeterDebugMyMeter.ilk
文件 5139456 2013-01-04 16:05 MyMeterDebugMyMeter.pdb
目录 0 2013-01-04 16:16 MyMeteripch
目录 0 2013-01-04 16:16 MyMeteripchmymeter-8c2b1b3a
目录 0 2013-01-04 16:16 MyMeterMyMeter
文件 59265024 2013-01-04 16:06 MyMeterMyMeter.sdf
文件 888 2013-01-04 14:18 MyMeterMyMeter.sln
文件 23552 2013-01-04 16:06 MyMeterMyMeter.suo
目录 0 2013-01-04 16:16 MyMeterMyMeterDebug
文件 3330 2013-01-04 16:05 MyMeterMyMeterDebugcl.command.1.tlog
文件 68660 2013-01-04 16:05 MyMeterMyMeterDebugCL.read.1.tlog
文件 3048 2013-01-04 16:05 MyMeterMyMeterDebugCL.write.1.tlog
文件 2 2013-01-04 16:05 MyMeterMyMeterDebugli
文件 2 2013-01-04 16:05 MyMeterMyMeterDebugli
文件 2 2013-01-04 16:05 MyMeterMyMeterDebugli
文件 2 2013-01-04 16:05 MyMeterMyMeterDebugli
文件 2 2013-01-04 16:05 MyMeterMyMeterDebugli
文件 2 2013-01-04 16:05 MyMeterMyMeterDebugli
文件 2226 2013-01-04 16:05 MyMeterMyMeterDebugli
文件 5476 2013-01-04 16:05 MyMeterMyMeterDebugli
文件 1608 2013-01-04 16:05 MyMeterMyMeterDebugli
文件 76766 2013-01-04 16:05 MyMeterMyMeterDebugMeter.obj
文件 762 2013-01-04 16:05 MyMeterMyMeterDebugmt.command.1.tlog
文件 800 2013-01-04 16:05 MyMeterMyMeterDebugmt.read.1.tlog
文件 562 2013-01-04 16:05 MyMeterMyMeterDebugmt.write.1.tlog
文件 915 2013-01-04 14:48 MyMeterMyMeterDebugMyMeter.exe.em
文件 980 2013-01-04 14:48 MyMeterMyMeterDebugMyMeter.exe.em
文件 640 2013-01-04 16:05 MyMeterMyMeterDebugMyMeter.exe.intermediate.manifest
............此处省略33个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)