MFC,基于对话框的,想在对话框中的某一区域画带刻度的坐标轴 20

 我来答
dut_wish
2012-02-17 · TA获得超过1634个赞
知道小有建树答主
回答量:301
采纳率:0%
帮助的人:505万
展开全部

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);

};

可以单点某根坐标线 ,也可以点交叉点

点击被捕获后坐标变虚线,变虚线情况下的线都可以移动

可以方便的重用到自己代码里

来自:求助得到的回答
453743739
2012-02-06 · TA获得超过343个赞
知道小有建树答主
回答量:515
采纳率:0%
帮助的人:313万
展开全部

void DrawLine(CDC* pDC, int x1, int y1, int x2, int y2)//写好的画直线函数

{

pDC->MoveTo(x1, y1);

pDC->LineTo(x2, y2);

}

void CDrawDlg::OnBnClickedButton1()

{

CDC* pDC = new CDC;

pDC = GetDC();

DrawLine(pDC, 50, 50, 100, 100);//调用它

}

这是画直线的函数,运行:

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shengyingyo
2012-02-07 · 超过10用户采纳过TA的回答
知道答主
回答量:47
采纳率:0%
帮助的人:28.4万
展开全部
我有程序可以发给你
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式