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

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

//////////////////////////////////////////////////////////////////////////////
//文件 SXY.h
//主要功能:
// 基础类库
//程序编写: 2005-12-07
/////////////////////////////////////////////////////////////////////////////
#pragma once
#include "rect8.h"
#include ".\angle.h"
namespace NBase
{
//Extend中的参数
#define EXTEND_MODE_DEFAULT 0 //居左上
#define EXTEND_MODE_STRECH 1 //拉伸
#define EXTEND_MODE_CENTER 2 //居中
#define EXTEND_MODE_HEIGHT 3 //按高度满屏显示
#define EXTEND_MODE_WIDTH 4 //按宽度满屏显示
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);
//坐标变换
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); //参数单位1实际单位代表的毫米长度
void GetScale(double& ScaleX, double& ScaleY); //参数单位1实际单位代表的毫米长度
void SetCustomDPI(double dCustomDPI); //设置显示分辨率, 参数为每英寸的点阵数
void operator=(CSXY& dc);
CDC* GetDC(void);
void SetViewRect(CRect rect);
// 按实际坐标设置显示范围
// void SetViewRectReal(CRect rect);
CRect GetViewRect(void);
CRect8 GetRealRect(void);
void SetRealRect(CRect8 realRect);
CRect8 m_screenRect; //指向屏幕的窗口坐标,之前为CRect型,为了插入符号的准确,改为了CRect8,与CRect存取的结构一样
double PixelPerUnitX;
double PixelPerUnitY; //每单位象素个数
double UnitX;
double UnitY; //毫米/象素
CAngle* m_pAngle;
protected:
CDC *pDC;
CRect m_ViewRect;
CRect8 m_RealRect;
};
AFX_INLINE CDC* CSXY::GetDC(void)
{
return pDC;
}
};
using namespace NBase;