?? 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 + -