如何在对话框里画直线
怎么样在MFC的对话框里画直线呢,不是用鼠标,是程序里定义哪个点到哪个点之间连上一条直线.直线可以定义宽度,也可以定义颜色.本人是初学者,在界面布置应用中需要这样的功能,...
怎么样在MFC的对话框里画直线呢,不是用鼠标,是程序里定义哪个点到哪个点之间连上一条直线.直线可以定义宽度,也可以定义颜色.本人是初学者,在界面布置应用中需要这样的功能,各位仁兄帮帮忙啊,需要用到哪些类,定义哪些消息等等.有源码就最好了.
展开
1个回答
展开全部
CClientDC dc(this);//设置当前客户区大小为设备上下文的大小
dc.SetMapMode(MM_LOMETRIC);//设置逻辑坐标系:单位0.1mm.正Y轴向下
//原点屏幕左上角.
CPen pen;
pen.CreatePen(PS_DOT,0,RGB(222,222,222)); //PS_SOLID---实线
//DOT--点阵//1---画笔宽度,0为一个像素点,1则为两个像素点
//RGB=read&green&blue,数字范围0至255,随便调吧
CPen* pOldPen=dc.SelectObject(&pen); //将pen选入DC,同时将被替换下来的画笔存入pOldPen中.以备使用后,恢复原始状态用.
dc.MoveTo(100,-100);//移动到直线的起点坐标
dc.LineTo(1000,-500);//画直线到直线的终点
dc.SelectObject(pOldPen);
pen.DeleteObject();
pOldPen->DeleteObject();
//节约内存,且恢复原样.
//悄悄的说:鼠标画线比程序画线要复杂.
1.要捕捉鼠标消息
2.要捕捉鼠标坐标
3.画线的坐标用的是CPoint类的对象
也就是说绘直线时,程序直接绘与用鼠标直接绘用的是同一个函数.不同的只是参数形式,一个是用一个CPoint的对象做为参数,参数个数为1.另一个是坐标点为参数,参数个数为2.这是因为绘直线的函数的声明中有两个不同参数的构造函数,专用词叫做函数的重载!
//////////
呵呵,当初我也犯过这种错误,以为应是不同的两个函数.到处去找,程序画线的例子!
dc.SetMapMode(MM_LOMETRIC);//设置逻辑坐标系:单位0.1mm.正Y轴向下
//原点屏幕左上角.
CPen pen;
pen.CreatePen(PS_DOT,0,RGB(222,222,222)); //PS_SOLID---实线
//DOT--点阵//1---画笔宽度,0为一个像素点,1则为两个像素点
//RGB=read&green&blue,数字范围0至255,随便调吧
CPen* pOldPen=dc.SelectObject(&pen); //将pen选入DC,同时将被替换下来的画笔存入pOldPen中.以备使用后,恢复原始状态用.
dc.MoveTo(100,-100);//移动到直线的起点坐标
dc.LineTo(1000,-500);//画直线到直线的终点
dc.SelectObject(pOldPen);
pen.DeleteObject();
pOldPen->DeleteObject();
//节约内存,且恢复原样.
//悄悄的说:鼠标画线比程序画线要复杂.
1.要捕捉鼠标消息
2.要捕捉鼠标坐标
3.画线的坐标用的是CPoint类的对象
也就是说绘直线时,程序直接绘与用鼠标直接绘用的是同一个函数.不同的只是参数形式,一个是用一个CPoint的对象做为参数,参数个数为1.另一个是坐标点为参数,参数个数为2.这是因为绘直线的函数的声明中有两个不同参数的构造函数,专用词叫做函数的重载!
//////////
呵呵,当初我也犯过这种错误,以为应是不同的两个函数.到处去找,程序画线的例子!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询