MFC,基于对话框的,想在对话框中的某一区域画带刻度的坐标轴 20
class CCoordinates
{
public:
CCoordinates();
//界面在OnPain或者OnDraw等消息处理函数调用,以绘制整个坐标
void Render(HDC hDC);
//处理鼠标左键按下时的情况,判断是否某条坐标被捕获
void MouseLDown(CPoint point);
//处理鼠标左键松开时的情况,判断是否某条坐标被释放
void MouseLRelease(CPoint point);
//处理鼠标拖动消息,如果没有坐标被捕获,则忽略
void MouseMove(CPoint point);
//设置坐标线的捕获范围
void SetCaptureRange(int nRange);
//设置坐标偏移
void SetCoordinatesOffset(int nX,int nY);
//设置坐标
void SetCoordinates(int nX,int nY);
//设置坐标系长度
void SetCoordinatesLength(int nHLength,int nVLength);
private:
//坐标系刻度垂直长度和水平长度
int m_nVLength;
int m_nHLength;
//坐标偏移量,绝对坐标在客户区起始位置
int m_nXOffset;
int m_nYOffset;
//该坐标的x和y轴分量
int m_nX;
int m_nY;
//分别标识垂直方向坐标线和水平方向坐标线是否被捕捉
//用于拖动坐标线
BOOL m_bCaptureX;
BOOL m_bCaptureY;
//坐标线的捕获范围,因为我们的坐标是一条线像素宽带为1,这样很难确保用户每次点击到这条线上
//我们指定一个范围,只要用户点在鼠标线附近都算作点击到了鼠标
int m_nCaptureRange;
//用以绘制坐标文本
void DrawDigi(HDC hDC);
//用以绘制坐标线
void DrawLines(HDC hDC);
//用以绘制坐标刻度
void DrawCoordinate(HDC hDC);
};
可以单点某根坐标线 ,也可以点交叉点
点击被捕获后坐标变虚线,变虚线情况下的线都可以移动
可以方便的重用到自己代码里