求一个小Windows MFC程序

要求就是有个画直线的功能,别的不求。希望大家帮忙啊。谢谢!我是新手,还是希望您能给出源代码。谢谢!我照做了,但是只能生成一个简单界面,没有画图功能。怎么办???... 要求就是有个画直线的功能,别的不求。希望大家帮忙啊。谢谢!
我是新手,还是希望您能给出源代码。谢谢!
我照做了,但是只能生成一个简单界面,没有画图功能。怎么办???
展开
 我来答
中朵扬1G
2009-09-15 · 超过17用户采纳过TA的回答
知道答主
回答量:59
采纳率:0%
帮助的人:36.7万
展开全部
四个编辑框IDC_EDIT1 IDC_EDIT2 IDC_EDIT3 IDC_EDIT4

增加二个CPoint类型的成员变量 pt1,pt2;

pt1.x=GetDlgItemInt(IDC_EDIT1) //得到第一个X坐标
pt1.y=GetDlgItemInt(IDC_EDIT2) //得到第一个Y坐标
pt2.x=GetDlgItemInt(IDC_EDIT3)//....
pt2.y=GetDlgItemInt(IDC_EDIT4) //....
//定义一个DC
CClientDC dc(this);
dc.MoveTo(pt1.x,pt1.y); //光标移到起点pt1处
dc.LineTo(pt2.x,pt2.y); //从起点画一条线到pt2

下面给你提供一个画直线的动画效果可以参考下,效果一样的:

假定两点坐标为x1,y1和x2,y2,
假定从x1,y1开始,设定一个中间坐标x,y,并且初始化x=x1,y=y1.
另外设置增量:
dx=(x2-x1)/T_ALL, dy=(y2-y1)/T_ALL,其中的T_ALL为你想要画出整条线用的时间间隔次数,
然后设置一个时间:SetTimer,时间间隔不妨为100ms。
在响应WM_TIMER消息中:x+=dx, y+=dy;
在响应WM_PAINT消息中作图:MoveToEx(x1,y1,NULL);LineTo(x,y);

上面的是伪代码,用小小心思,就可以编出来了。变量类型不妨用float,不必理会编译时的类型警告(float->int) (这个伪码是我在网上看到的,感觉对你有帮助就提供你看看。。。)

这个是我刚给你做的,你看一下。。。
1:创建一个单文档应用程序CLine(具体不再说)
并未CLineView类创建一个成员变量,m_ptOrigin

2:为CLineView类创建一个 WM_LBUTTONDOWN 消息函数
void CCLineView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default

//初始化第一步添加的变量。
m_ptOrigin = point;

CView::OnLButtonDown(nFlags, point);
}

3:为CLineView类创建一个 WM_LBUTTONUP 消息函数,添加代码如下所示

void CCLineView::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
//获得窗口的设备描述表
HDC hdc;
hdc = ::GetDC(m_hWnd);
//移动到线条的起点
MoveToEx(hdc,m_ptOrigin.x,m_ptOrigin.y,NULL);
//画线
LineTo(hdc,point.x,point.y);
//释放设备描述表
::ReleaseDC(m_hWnd,hdc);
CView::OnLButtonUp(nFlags, point);
}

OK了,按照上面的步骤做就行了。。。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式