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);
};
可以单点某根坐标线 ,也可以点交叉点
点击被捕获后坐标变虚线,变虚线情况下的线都可以移动
可以方便的重用到自己代码里
来自:求助得到的回答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);望采纳