📄 imagemap.h
字号:
// ImageMap.h: interface for the CImageMap class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_IMAGEMAP_H__C03EE457_213D_4B71_B1DB_74BECD298AD1__INCLUDED_)
#define AFX_IMAGEMAP_H__C03EE457_213D_4B71_B1DB_74BECD298AD1__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
//最小包围矩形
typedef struct
{
float x1; //min x
float y1; //min y
float x2; //max x
float y2; //max y
}MBRECT, FAR *LPMBRECT;
class CDib;
class CImageMap
{
public:
CImageMap();
virtual ~CImageMap();
public:
CString m_strMapFile; //地图文件名,全路经
CString m_strMapName; //地图名称
BOOL m_bIsLoadMap; //标志地图是否已加载
double m_dScale; //缩放比例尺
double m_dScaleOrigin; //原始图的比例尺
protected:
CDib * m_pDib; //BMP地图对象
long m_x1, m_x2, m_y1, m_y2; //地图对象显示窗口
long m_cx, m_cy; //屏幕中心点
MBRECT m_rcRect;
long m_lImageWidth; //图像宽度(象素)
long m_lImageHeight; //图像高度(象素)
HWND m_hWnd; //地图显示窗口句柄
CDC m_memDC; //内存DC
CBitmap m_Bitmap; //内存DC绘图用的位图对象
CBitmap *m_pOldBitmap; //保存内存DC原来的位图
double m_dOffsetX; //x偏移量
double m_dOffsetY; //y偏移量
long m_nShiftSize; //每次平移的尺度大小
double m_dZoomFactor; //缩放基数
double m_dZoomAmount; //缩放因子
double m_dZoomOrigin; //显示全图时的比例(象素单位/地图单位)
double m_dScaleAll; //显示全图时的缩放比例尺
BOOL m_bSetMBRC; //是否设置了m_rcRect
public:
//刷新地图,rcInvalid为无效区,在主窗口OnPaint或OnDraw中调用
void Draw(CDC *pdc, CRect& rcInvalid);
int DrawMap(); //显示地图
/* 设置地图的边界和比例尺 */
void SetMapMBRC(double left, double top, double right, double bottom, double dScale);
BOOL IsSetMapMBRC(void);
void SetMapHwnd(HWND hWnd); //设置地图显示窗口句柄
int LoadMapFile(LPCTSTR filename); //加载地图
void UnloadMap(); //卸载地图
double Distance(double lon1, double lat1, double lon2, double lat2);//计算距离
//地图放大、缩小
int ZoomOut(long x, long y); //放大地图(以给定点中心为基准)
int ZoomOut(); //放大地图(以屏幕中心为基准)
int ZoomIn(long x, long y); //缩小地图(以给定点中心为基准)
int ZoomIn(); //缩小地图(以屏幕中心为基准)
int ZoomToAll(); //显示全图
int ZoomOut(POINT pt1, POINT pt2);
int ZoomIn(POINT pt1, POINT pt2);
//坐标转换
void MapToScreen(double *x, double *y); //地图坐标转换为屏幕坐标
void ScreenToMap(double *x, double *y); //屏幕坐标转换为地图坐标
void MapToImage(double *x, double *y); //地图坐标转换为图像坐标
void ImageToMap(double *x, double *y); //图像坐标转换为地图坐标
void ScreenToImage(long *x, long *y); //屏幕坐标转换为图像坐标
void ImageToScreen(long *x, long *y); //图像坐标转换为屏幕坐标
//地图移动
int MoveDown(); //下移
int MoveUp(); //上移
int MoveRight(); //右移
int MoveLeft(); //左移
//以给定尺寸平移地图,dx=+左移,=-右移;dy=+上移,=-下移
int MoveMap(long dx, long dy, BOOL bRedraw = TRUE);
//把地图的中心定位到指定的点
void CenterAt(double x, double y);
//设置地图显示窗口
void SetClientRect(long x1, long y1, long x2, long y2);
void SetClientRect(LPRECT rc);
protected:
void DrawMap(CDC *pdc); //显示地图
//地图参数初始化
void InitialParam(MBRECT mbrc);
};
#endif // !defined(AFX_IMAGEMAP_H__C03EE457_213D_4B71_B1DB_74BECD298AD1__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -