📄 pointerdevice.h
字号:
/////////////////////////////////////////////////////////
// 指针式测量设备PointerDevice封装类
// 版本:1.07
// 最后修改日期:2002.1.25
/////////////////////////////////////////////////////////
#if !defined(AFX_POINTERDEVICE_H__D08CF18E_8665_45AC_B181_603A39FC70D0__INCLUDED_)
#define AFX_POINTERDEVICE_H__D08CF18E_8665_45AC_B181_603A39FC70D0__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// PointerDevice.h : header file
//
#define PI 3.14159265 //圆周率
#define ANG PI/180 //1度的角度相对的弧度值
//以下几个宏定义了仪表所处的几种工作状态
#define PD_TEST 0 //测试状态,创建时默认的状态,指针会自动移动以测试是否正常工作
#define PD_UPDATED 1 //工作状态之一,表示当前仪表的指针已经指到合适的位置
#define PD_UPDATING 2 //工作状态之二,表示当前仪表的指针正在移动过程中,尚未达到目的位置
#define PD_SHUTDOWN 3 //关闭状态,此状态下仪表不作任何动作。
//一下几个宏定义了仪表的几种外观样式
#define PD_NONE 0 //没有特殊的样式
#define PD_3DSTYLE 1 //圆形表周围有3D边框
#define PD_3DBORDER 2 //仪表周围有3D矩形框
/////////////////////////////////////////////////////////////////////////////
// PointerDevice window
class PointerDevice : public CStatic
{
// Construction
public:
PointerDevice(CWnd *parent);
// Attributes
public:
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(PointerDevice)
//}}AFX_VIRTUAL
// Implementation
public:
void PD_SetBorderColor(COLORREF color);
void PD_SetTitle( int x, int y, CString title, UINT fontsize, COLORREF color);
UINT PD_PtInHotArea(CPoint point);
void PD_SetBitmapBk(UINT bitmap_id = 0, UINT showmode = 0);
void PD_SetPointerShadow(UINT show = 0, COLORREF color = RGB(100, 100, 100), int offset_x = 3, int offset_y = 2);//该函数设置指针的阴影样式
void PD_SetStepLength(double length); //该函数设置指针最小的摆动角度
void PD_SetStatus(UINT status); //该函数设置仪表的状态
void PD_SetIsLoop(UINT op); //该函数设置指针是否可以循环转动
void PD_Update(void); //该函数用已知变量完成对其他变量的赋值,应该在其他变量初始化完成后最后调用
void PD_SetOrigin(long x, long y); //该函数设置仪表内部的原点位置
void PD_SetTimer(UINT timeout); //该函数设置仪表的内部定时器
void PD_MoveWindow(int x, int y); //该函数移动仪表的位置,并完成重画
void PD_SetSize(UINT width, UINT height); //该函数设置仪表的大小
void PD_SetOutputSize(UINT width, UINT height); //该函数设置输出框的大小
void PD_SetOutputBdColor(COLORREF color); //该函数设置输出框边框颜色
void PD_SetOutputTextColor(COLORREF color); //该函数设置输出文字的颜色
void PD_SetOutputBkColor(COLORREF color); //该函数设置输出框的背景颜色
void PD_SetOutputFontSize(UINT size); //该函数设置输出框的文字大小
void PD_SetOutputPos(int rect_x, int rect_y, int text_x, int text_y); //该函数设置输出框的中心位置(相对于PD_Origin)和文字的中心位置(相对于PD_Origin)
void PD_SetAxleStyle(UINT radius, COLORREF color);//该函数设置中心轴的样式,分别制定其半径和颜色
void PD_SetPointerStyle(int side_x, int side_y, int tail); //该函数设置仪表指针的样式, side_x和side_y是三角形一个端点(另外两个端点分别为原点和目标点)相对于原点的位置,最后一个tail是指针反向延长的长度
void PD_SetPointerWidth(UINT width); //该函数设置仪表指针的绘制宽度
void PD_SetPointerLength(UINT length); //该函数设置指针的长度
void PD_SetPointerColor(COLORREF color); //该函数设置指针的亮面的颜色,用红、黄、篮三种颜色的份量决定,三种颜色份量范围0~255
void PD_SetCurrentNumber(double number); //该函数设置仪表的当前要显示的数值
void PD_SetNumberRange(double min, double max); //该函数设置仪表的测量数值范围
void PD_SetDeltaNumber(double deltanumber); //该函数设置刻度线标注时每格数值的增量
void PD_SetCenterNumber(double number); //该函数设置指针默认位置所对应的数值
void PD_SetTextStartAngle(double angle);//该函数设置刻度线附近文字的开始标注位置
void PD_SetTextColor(COLORREF color); //该函数设置刻度线附近文字颜色
void PD_SetTextSpace(UINT length); //该函数设置刻度线附近文字和刻度线之间的距离
void PD_SetFontSize(UINT size); //该函数设置刻度线附近文字的字体大小
void PD_SetSweepAngle(double angle); //该函数设置仪表刻度弧线的张角
void PD_SetCenterAngle(double angle); //该函数设置刻度弧线中心的角度,将决定表盘的摆放方向
void PD_SetBigGridNum(UINT num); //该函数设置大刻度的格数目
void PD_SetBigGridLength(UINT length); //该函数设置大刻度线的长度
void PD_SetSmallGridNum(UINT num); //该函数设置小刻度的格数目
void PD_SetSmallGridLength(UINT length);//该函数设置小刻度线的长度
void PD_SetRadius(UINT radius); //该函数设置刻度弧线的半径
void PD_SetCalibrationColor(COLORREF color); //该函数设置刻度线颜色
void PD_SetInnerRadius(UINT radius); //该函数设置面板内部空心圆的半径
void PD_SetFaceColor(COLORREF color); //该函数设置面板颜色
void PD_SetFaceSweepAngle(double angle);//该函数设置仪表面板的张角
void PD_SetBorderWidth(UINT width); //该函数设置仪表圆形边界的宽度
void PD_SetFaceRadius(UINT radius); //该函数设置面板的半径
void PD_SetBkColor(COLORREF color); //该函数设置仪表的背景颜色
virtual ~PointerDevice();
// Generated message map functions
protected:
//{{AFX_MSG(PointerDevice)
afx_msg void OnPaint();
afx_msg void OnTimer(UINT nIDEvent);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
private:
COLORREF PD_TitleColor;
CPoint PD_TitleOffset;
UINT PD_TitleFontSize;
CFont PD_TitleFont;
CString PD_Title;
UINT PD_BitmapID; //位图背景的资源ID
UINT PD_UseBitmap; //标志是否使用位图背景,0表示不使用,1表示使用,2表示将位图映射使用
UINT PD_Status; //仪表当前的状态
UINT PD_Timer; //仪表内部定时器的触发时间间隔
UINT PD_Width; //仪表的高度
UINT PD_Height; //仪表的宽度
double PD_StepLength; //仪表指针的最小摆动角度
CPoint PD_Origin; //仪表的指针转轴(原点),采用仪表的内部坐标系
UINT PD_Accuracy; //仪表刻度文字的输出精度,表示读数后面保留小数位数
UINT PD_OutputAccuracy; //仪表的输出示数精度,表示读数后面保留小数位数
UINT PD_OutputHeight; //仪表的输出框高度
UINT PD_OutputWidth; //仪表的输出框宽度
UINT PD_OutputFontSize; //仪表的输出示数字体大小
CPoint PD_OutputTextPos; //仪表输出示数的位置,相对于内部原点坐标
CPoint PD_OutputPos; //仪表的输出框的中心相对于内部原点的位置
CFont PD_OutputFont; //仪表的输出示数字体变量
COLORREF PD_OutputBdColor; //仪表的输出框的边界颜色
COLORREF PD_OutputBkColor; //仪表的输出示数背景的颜色
COLORREF PD_OutputTextColor; //仪表的输出示数文字的颜色
double PD_FaceSweepAngle; //仪表面板的张角
double PD_FaceLeftAngle; //仪表面板左侧弧度
double PD_FaceRightAngle; //仪表面板的右侧弧度
UINT PD_InnerRadius; //仪表面板上的内部中空圆半径
UINT PD_FaceRadius; //仪表面板的半径
CPoint PD_FaceEndPoint; //仪表面板弧线的终点位置
CPoint PD_FaceStartPoint; //仪表面板弧线的起点位置
COLORREF PD_FaceColor; //仪表圆形面板的颜色
COLORREF PD_BkColor; //仪表的背景颜色
UINT PD_AxleRadius; //圆形轴的半径
COLORREF PD_AxleColor; //圆形轴的颜色(选其中的最深色)
int PD_PointerTail; //指针尾部的点距离原点的位置
int PD_CurrentDirection; //仪表指针的当前移动方向
int PD_Direction; //指针摆动的正方向,有1和-1两种
double PD_PointerSideRadius;//指针边上的点对应于原点的半径
double PD_PointerSideAngle; //指针边上的点对应于X轴的角度
double PD_ObjectAngle; //指针转动的目的角度(相对于PD_CenterAngle),采用角度值
double PD_CurrentAngle; //仪表指针当前的摆动角度(相对于PD_CenterAngle),采用角度值
UINT PD_PointerWidth; //仪表指针的绘制线条宽度
UINT PD_RotateDir; //仪表指针的旋转方向,为true表示顺时针,为false表示逆时针
UINT PD_PointerLength; //仪表指针长度
UINT PD_IsLoop; //仪表指针是否可以循环转动,为true表示可以循环转动,false则不允许循环转动
UINT PD_HasPointerShadow; //标志是否有指针阴影
COLORREF PD_PointerColor; //指针亮面的颜色
COLORREF PD_PointerShadowColor; //指针阴影颜色
CPoint PD_PointerSide; //指针边部的点
CPoint PD_PointerShadowOffset; //指针阴影相对于指针的偏移量
UINT PD_BorderWidth; //仪表的圆形边框大小
UINT PD_Style; //仪表的样式参数
COLORREF PD_BorderColor; //仪表的圆形边框颜色(选其中的最深色)
double PD_CurrentNumber; //当前要显示的数值
double PD_MinNumber; //量程内最小数值
double PD_MaxNumber; //量程内最大数值
double PD_DeltaNumber; //刻度示数增量
double PD_CenterNumber; //刻度的中心示数
double PD_SweepAngle; //仪表刻度弧的跨度,采用角度值
double PD_CenterAngle; //仪表刻度弧的中心位置相对于X轴方向的夹角,采用角度值
double PD_RightAngle; //仪表刻度弧的右侧与X轴方向的夹角,采用角度值
double PD_LeftAngle; //仪表刻度弧的左侧与X轴方向的夹角,采用角度值
double PD_TextStartAngle; //刻度文字的起始位置相对于PD_CenterAngle的夹角,采用角度值
UINT PD_TextSpace; //仪表的刻度附近文字和刻度线之间的空间大小
UINT PD_FontSize; //仪表刻度附近文字的大小
UINT PD_SmallGridLength; //仪表刻度弧上小刻度(无示数)的刻度线长度
UINT PD_SmallGridNum; //仪表刻度弧上小刻度(无示数)的格子数目
UINT PD_BigGridLength; //仪表刻度弧上大刻度(标示数)的刻度线长度
UINT PD_BigGridNum; //仪表刻度弧上大刻度(标示数)的格子数目
UINT PD_Radius; //仪表刻度弧的外半径,单位是象素
CPoint PD_EndPoint; //仪表刻度弧上的左侧端点坐标(采用仪表的内部坐标系)
CPoint PD_CenterPoint; //仪表刻度弧上的中点坐标(采用仪表的内部坐标系)
CPoint PD_StartPoint; //仪表刻度弧上的右侧端点坐标(采用仪表的内部坐标系)
CFont PD_Font; //仪表的刻度附近文字字体变量
COLORREF PD_TextColor; //刻度线附近文字的颜色
COLORREF PD_CalibrationColor; //刻度线的颜色
void DrawFace(void); //该函数重画仪表自身的界面
double GetCurrentNumber(void); //该函数可以获取当前指针所表示的数字
COLORREF GetNextColor(COLORREF current_color, int delta);
COLORREF GetNextColor(COLORREF color, double ratio);
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_POINTERDEVICE_H__D08CF18E_8665_45AC_B181_603A39FC70D0__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -