|
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
//<2F>ļ<EFBFBD> SXY.h
|
|
|
|
|
|
//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>:
|
|
|
|
|
|
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д: 2005-12-07
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
#include "rect8.h"
|
|
|
|
|
|
#include ".\angle.h"
|
|
|
|
|
|
|
|
|
|
|
|
namespace NBase
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
//Extend<6E>еIJ<D0B5><C4B2><EFBFBD>
|
|
|
|
|
|
#define EXTEND_MODE_DEFAULT 0 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
#define EXTEND_MODE_STRECH 1 //<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
|
#define EXTEND_MODE_CENTER 2 //<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
|
#define EXTEND_MODE_HEIGHT 3 //<2F><><EFBFBD>߶<EFBFBD><DFB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
|
|
|
|
|
|
#define EXTEND_MODE_WIDTH 4 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
|
|
|
|
|
|
|
|
|
|
|
|
class AFX_EXT_CLASS CSXY :
|
|
|
|
|
|
public CRect8
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
CSXY(void);
|
|
|
|
|
|
virtual ~CSXY(void);
|
|
|
|
|
|
|
|
|
|
|
|
virtual int Create(CDC* pDC, BOOL bSetViewRect = TRUE);
|
|
|
|
|
|
virtual void Clear(void);
|
|
|
|
|
|
|
|
|
|
|
|
virtual CPoint GetScreen(double x, double y);
|
|
|
|
|
|
virtual CPoint2D GetScreen8(double x, double y);
|
|
|
|
|
|
|
|
|
|
|
|
virtual double GetScreenWidth8(double v);
|
|
|
|
|
|
virtual double GetScreenHeight8(double v);
|
|
|
|
|
|
virtual long GetScreenWidth(double v);
|
|
|
|
|
|
virtual long GetScreenHeight(double v);
|
|
|
|
|
|
|
|
|
|
|
|
int CreateAngle(double angle, double x0, double y0);
|
|
|
|
|
|
void DeleteAngle(void);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>任
|
|
|
|
|
|
virtual long GetSX(double x);
|
|
|
|
|
|
virtual long GetSY(double y);
|
|
|
|
|
|
virtual double GetRX(long x);
|
|
|
|
|
|
virtual double GetRY(long y);
|
|
|
|
|
|
virtual double GetSX8(double x);
|
|
|
|
|
|
virtual double GetSY8(double y);
|
|
|
|
|
|
virtual double GetRX(double x);
|
|
|
|
|
|
virtual double GetRY(double y);
|
|
|
|
|
|
|
|
|
|
|
|
virtual CRect8 GetReal(CRect& sr);
|
|
|
|
|
|
virtual CPoint2D GetReal(CPoint& point);
|
|
|
|
|
|
virtual CPoint2D GetReal(long x,long y);
|
|
|
|
|
|
virtual CPoint2D GetReal(double x,double y);
|
|
|
|
|
|
virtual CRect8 GetReal(CRect8& screenRect);
|
|
|
|
|
|
virtual CPoint2D GetReal(CPoint2D& pointScreen);
|
|
|
|
|
|
|
|
|
|
|
|
virtual CPoint GetScreen(CPoint2D& pt);
|
|
|
|
|
|
virtual CRect GetScreen(CRect8& rect);
|
|
|
|
|
|
virtual CRect8 GetScreen8(CRect8& rect);
|
|
|
|
|
|
|
|
|
|
|
|
virtual double GetRealWidth(long sw);
|
|
|
|
|
|
virtual double GetRealHeight(long sh);
|
|
|
|
|
|
virtual double GetRealWidth(double screenWidth);
|
|
|
|
|
|
virtual double GetRealHeight(double screenHeight);
|
|
|
|
|
|
virtual CSize GetScreenSize(CSize8& sz);
|
|
|
|
|
|
virtual CSize8 GetScreenSize8(CSize8& sz);
|
|
|
|
|
|
virtual CSize8 GetRealSize(CSize& sz);
|
|
|
|
|
|
virtual CSize8 GetRealSize(CSize8& sz);
|
|
|
|
|
|
|
|
|
|
|
|
void Extend(CRect8& rect, CRect& rtScreenWindow,int IsStrech);
|
|
|
|
|
|
void Extend(CRect8& rect, CRect8& rtScreenWindow,int IsStrech);
|
|
|
|
|
|
void Extend(CRect& rtScreenWindow,int IsStrech);
|
|
|
|
|
|
void Extend(CRect8& rtScreenWindow,int IsStrech);
|
|
|
|
|
|
void Reduce(double cc);
|
|
|
|
|
|
|
|
|
|
|
|
void SetScale(double ScaleX, double ScaleY); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>1ʵ<31>ʵ<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><C4BA>׳<EFBFBD><D7B3><EFBFBD>
|
|
|
|
|
|
void GetScale(double& ScaleX, double& ScaleY); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>1ʵ<31>ʵ<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><C4BA>׳<EFBFBD><D7B3><EFBFBD>
|
|
|
|
|
|
void SetCustomDPI(double dCustomDPI); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD>, <20><><EFBFBD><EFBFBD>ΪÿӢ<C3BF><D3A2><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
void operator=(CSXY& dc);
|
|
|
|
|
|
|
|
|
|
|
|
CDC* GetDC(void);
|
|
|
|
|
|
void SetViewRect(CRect rect);
|
|
|
|
|
|
// <20><>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>Χ
|
|
|
|
|
|
// void SetViewRectReal(CRect rect);
|
|
|
|
|
|
CRect GetViewRect(void);
|
|
|
|
|
|
|
|
|
|
|
|
CRect8 GetRealRect(void);
|
|
|
|
|
|
void SetRealRect(CRect8 realRect);
|
|
|
|
|
|
|
|
|
|
|
|
CRect8 m_screenRect; //ָ<><D6B8><EFBFBD><EFBFBD>Ļ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,֮ǰΪCRect<63><74>,Ϊ<>˲<EFBFBD><CBB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD>ȷ,<2C><>Ϊ<EFBFBD><CEAA>CRect8,<2C><>CRect<63><74>ȡ<EFBFBD>Ľṹһ<E1B9B9><D2BB>
|
|
|
|
|
|
double PixelPerUnitX;
|
|
|
|
|
|
double PixelPerUnitY; //ÿ<><C3BF>λ<EFBFBD><CEBB><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD>
|
|
|
|
|
|
double UnitX;
|
|
|
|
|
|
double UnitY; //<2F><><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
|
CAngle* m_pAngle;
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
CDC *pDC;
|
|
|
|
|
|
CRect m_ViewRect;
|
|
|
|
|
|
CRect8 m_RealRect;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
AFX_INLINE CDC* CSXY::GetDC(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
return pDC;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
using namespace NBase;
|