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

如题所述

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

};

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

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

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

来自:求助得到的回答
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-02-06

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);//调用它

}

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

本回答被网友采纳
第2个回答  2012-02-07
我有程序可以发给你

MFC,基于对话框的,想在对话框中的某一区域画带刻度的坐标轴
void SetCoordinatesLength(int nHLength,int nVLength);private:\/\/坐标系刻度垂直长度和水平长度 intm_nVLength;intm_nHLength;\/\/坐标偏移量,绝对坐标在客户区起始位置 intm_nXOffset;intm_nYOffset;\/\/该坐标的x和y轴分量 intm_nX;intm_nY;\/\/分别标识垂直方向坐标线和水平方向坐标线是否被捕捉 ...

如何使用mfc单文本框绘制坐标轴
基于对话框的MFC,在主对话框类中,OnPaint函数中,增加如下代码:if( m_beginPoint != CPoint( 0, 0 ) && m_endPoint != CPoint( 0, 0 ) ){ CClientDC hdc(this); \/\/获得设备环境 hdc.MoveTo( m_beginPoint );hdc.LineTo( m_endPoint );} 然后创建一个OnLButtonDown函数,内容如下...

怎样用MFC的对话框中画坐标曲线图
单文档的绘图一般都在OnDraw()当中进行,基于对话框的是OnPaint()你只需要计算出合适的坐标就好了。利用CDC类下的LineTo MoveTo 绘制直线即可 对应的曲线也有相应的函数,这是静态的。我这里有一个动态绘制的Demo,以前参考过的 不知道符不符合楼主的要求。要的话可以给个邮箱 ...

VC++ MFC在对话框上画图问题
1、如何在新建的一个dialog中添加onpaint()函数?例如你新建了一个dialog,类名为test22(添加类是双击新建那个窗口),接着找到这个类的头文件test22.h,在其中的protected中添加一行afx_msg void OnPaint();这样就可以在test22.cpp中用onpaint()函数了,添加void test22::OnPaint(){}就可以了:...

mfc基于对话框窗口最大化与指定分辨率问题
全屏并不一定是1024*768的啊 你如果要全屏的话,先获取屏幕尺寸,然后设置窗口大小就行了。代码如下:int nFullWidth = GetSystemMetrics(SM_CXSCREEN);int nFullHeight = GetSystemMetrics(SM_CYSCREEN);MoveWindow(0, 0, nFullWidth, nFullHeight);如果只是想设置1024*768,那么把后面两个参数写死就...

mfc中怎样在一个基于对话框程序中添加菜单栏 急。。。!
在对话框头文件中声明CMenu 变量,例如m_Menu;在OnInitDlg()中加入如下语句:m_Menu.LoadMenu("此处加入你的菜单id");SetMenu(&m_Menu);就可以了

mfc 在对话框中显示直角坐标系
1. 添加static静态文本框到对话框上, 并修改其ID为IDC_MYSTATIC 2. 在对话框的申明文件即CXXXDlg.h文件中定义变量:CWnd *pWnd; \/\/获取控件窗口类指针 CDC *pDC; \/\/获取控件的CDC指针 3. 在其cpp实现文件中的OnInitDialog()函数中获取:pWnd = GetDlgItem(IDC_STATIC);pDC = pWnd->Get...

我想在基于对话框的MFC程序中画图,画图程序可以不写在OnPaint函数中吗...
1.可以不在OnPaint中 2.其机制是:a.windows是多窗口的,你的程序不应该把图画到其它地方去,所以你要取得窗口的专门管绘图的一个句柄,叫做 HDC b.你用MFC,要取它的话用这句: CDC* pDC=this->GetDC(); (某窗口的DC,例如本窗口就是this)c.然后就可以向DC中画了,例如:pDC->LineTo(100,100...

MFC如何获取控件在对话框上的位置坐标
首先在对话框上并排放置两个同样大小的picture控件,将他们的标识分别设成IDC_LEFT和IDC_RIGHT,然后添加两个编辑框用于显示picture控件的大小,给这两个编辑框添加相应的数据成员m_row和m_colume。添加一个按钮用于连接picture控件中的点,为这个按钮添加成员函数OnMatch() 。void CControlDlg::OnMatch(){...

MFC如何获取控件在对话框上的位置坐标
先得到控件的窗口坐标再转换成相对于对话框的坐标即可。代码如下:CRect r;GetDlgItem(IDC_BUTTON1)->GetWindowRect(&r);ScreenToClient(r);望采纳

相似回答