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.

116 lines
3.2 KiB
C

1 month ago
//////////////////////////////////////////////////////////////////////////////
//<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><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><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;