You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123 lines
4.2 KiB
C

1 month ago
//////////////////////////////////////////////////////////////////////////////
//<2F>ļ<EFBFBD> ScaleRuler.h
//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>:
// ʵ<>̶ֿȱ<CCB6><C8B1>ߵĹ<DFB5><C4B9>ܼ<EFBFBD><DCBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD>
//
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д: 2008-10-28
/////////////////////////////////////////////////////////////////////////////
#pragma once
#include ".\GroupBase.h"
#include "GDFLOGFONT.h"
#define AXIS_VIEW_ARROW 0x0001 //<2F><>ʾ<EFBFBD><CABE>ͷ
#define AXIS_TEXT_TOP 0x0002 //<2F><>ע<EFBFBD><D7A2><EFBFBD>Ϸ<EFBFBD>
#define AXIS_TEXT_BOTTOM 0x0004 //<2F><>ע<EFBFBD><D7A2><EFBFBD>·<EFBFBD>
#define AXIS_AUTO_UPDATE 0x0008 //<2F><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>¿̶<C2BF>ֵ
#define AXIS_DIRECTION_H 0x0010 //ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>¿̶<C2BF>ֵʱʹ<CAB1><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define AXIS_DIRECTION_V 0x0020 //<2F><>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>¿̶<C2BF>ֵʱʹ<CAB1><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define AXIS_TEXT_LEFT AXIS_TEXT_TOP //<2F><>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define AXIS_TEXT_RIGHT AXIS_TEXT_BOTTOM //<2F><>ע<EFBFBD><D7A2><EFBFBD>ұ<EFBFBD>
#define AXIS_TEXT_V 0x0040 //<2F><>Ϊ<EFBFBD><CEAA>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ı<EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD>մ<EFBFBD>ֱ<EFBFBD><D6B1>ʾ
#define AXIS_VIEW_SMALL_SCALE 0x0080 //<2F><>ʾС<CABE>̶<EFBFBD>
#define AXIS_TITLE_POS_TOP 0x0100
#define AXIS_TITLE_POS_BOTTOM 0x0200
#define AXIS_TITLE_POS_LEFT 0x0400
#define AXIS_TITLE_POS_RIGHT 0x0800
#define AXIS_TITLE_SHOW 0x1000 //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
#define AXIS_TITLE_ABSOLUTESCALE 0x2000 // <20><><EFBFBD><EFBFBD><EFBFBD>ڶྮ<DAB6><E0BEAE><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ö<EFBFBD>Ӧ<EFBFBD>ġ<EFBFBD>
class AFX_EXT_CLASS CScaleRuler : public CGroupBase
{
public:
CScaleRuler(void);
virtual ~CScaleRuler(void);
void Serialize(CArchive& ar, const short &ver) override;
virtual void Write(CFile &fw, const short& ver);
virtual int Read(CFile &fr, const short& ver);
virtual bool GetRange(CRect8& range);
virtual int IsInRange(CRect8& range);
virtual void WriteDML(CFile& fw, const short& ver, int nBaseTabNum);
virtual int ReadDML(CFile &fr, const short &ver);
virtual void WritePCG(CFile& fw, const short& ver, int nBaseTabNum);
virtual int ReadPCG(CFile &fr, const short &ver);
int ReadPCG2(CFile &fr, const short &ver);
virtual void ScaleProperty(double sx, double sy);
void operator=(CScaleRuler& sr);
void Draw(void* pDC, COLORREF color, void* pxy=NULL);
void EnableAutoUpdate(BOOL bEnable);
BOOL IsAutoUpdate(void);
void EnableDirectionH(BOOL bEnable);
BOOL IsDirectionH(void);
void EnableDirectionV(BOOL bEnable);
BOOL IsDirectionV(void);
void EnableTextTop(BOOL bEnable);
BOOL IsTextTop(void);
void EnableTextLeft(BOOL bEnable);
BOOL IsTextLeft(void);//ʵ<><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ̶<C7BF><CCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20>̶<EFBFBD><CCB6>ı<EFBFBD><C4B1><EFBFBD><EFBFBD>Ҳ<EFBFBD>,<2C><>IsTextTop<6F><70><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>־λ
void EnableArrow(BOOL bEnable);
BOOL IsShowArrow(void);
void EnableSmallScale(BOOL bEnable);
BOOL IsShowSmallScale(void);
BOOL IsTitleOnTop();
void EnableTitleOnTop(BOOL bEnable =TRUE);
BOOL IsTitleOnBottom();
void EnableTitleOnBottom(BOOL bEnable = TRUE);
BOOL IsTitleOnLeft();
void EnableTitleOnLeft(BOOL bEnable = TRUE);
BOOL IsTitleOnRight();
void EnableTitleOnRight(BOOL bEnable = TRUE);
BOOL IsShowTitle();
void EnableTitleShow(BOOL bEnable = TRUE);
BOOL IsAbsoulteScale();
void EnableAbsoulteScale(BOOL bEnable);
void ReCaculateStartAndEnd(CRect8 OldRect);
DWORD m_nFlags; //<2F><><EFBFBD>񣬱<EFBFBD><F1A3ACB1><EFBFBD><EFBFBD><EFBFBD>չ
double m_dScaleStep; //<2F>̶Ȳ<CCB6><C8B2><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF>λ<EFBFBD>ñ<EFBFBD>עһ<D7A2><D2BB><EFBFBD>̶<EFBFBD>ֵ<EFBFBD><D6B5>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD>10<31><30>С<EFBFBD>̶Ȼ<CCB6><C8BB><EFBFBD>
double m_dScaleMin; //<2F>̶ȿ<CCB6>ʼֵ
double m_dScaleMax; //<2F>̶Ƚ<CCB6><C8BD><EFBFBD>ֵ
double m_dAxisWidth; //<2F><><EFBFBD>߿<EFBFBD><DFBF><EFBFBD>
double m_dTextHeight; //<2F><><EFBFBD>ָ߶<D6B8>
double m_dTextScale; //<2F>ı<EFBFBD>ϵ<EFBFBD><CFB5>
int m_SGradSegment; //ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD>̶<EFBFBD><CCB6>ϸ<EFBFBD><CFB8>̶ȵĸ<C8B5><C4B8><EFBFBD>
COLORREF color;
//BOOL m_bAbsolutePos; // <20><><EFBFBD><EFBFBD><EFBFBD>ڶྮ<DAB6><E0BEAE><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ö<EFBFBD>Ӧ<EFBFBD>ġ<EFBFBD>
CString m_strTitle;
CString m_strUnit;
GDFLOGFONT m_TitleFont;
GDFLOGFONT m_GradFont;
protected:
void DrawAxis(void* pDC, CRect8& rect, BOOL IsH, int nMode, void* pxy);
void DrawText(void* pDC, CRect8& rect, BOOL IsH, int nMode, void* pxy);
void DrawTitle(CXyDC& dc ,CRect8& rect);
//void OffSetRectForTitle(CRect8& rect);
int PCG_ReadProperty(CXmlParse &xp);
int PCG_ReadFont(CXmlParse &xp, GDFLOGFONT& logfont);
void PCG_WriteFont(CFile &fw, const short& ver, int nBaseTabNum, GDFLOGFONT &logFont);
public:
virtual int ReadPCG(void *pxp, const short &ver);
int ReadPCG2(void *pxp, const short &ver);
protected:
int PCG_ReadProperty(void *pxp);
int PCG_ReadFont(void *pxp, GDFLOGFONT& logfont);
void PCG_WriteFont(void *pxp, const short& ver, int nBaseTabNum, GDFLOGFONT &logFont);
};