C++的MFC实现DDA算法画直线,从目录创建到完整代码

首先给他一个菜单栏的按钮

然后在属性处给他一个ID 

然后在类视图右键你的view(是你的项目名称后面带一个view的那个)点击属性

然后 在消息栏给他一个消息,会自动生成一个空函数体

 然后取事件栏给他一个事件,会生成一个空函数体void CMFCApplication1View::OnDdaLine()

 给void CMFCApplication1View::OnDdaLine()加以下代码:

void CMFCApplication1View::OnDdaLine()
{
	// TODO: 在此添加命令处理程序代码
	MenuDrawType = 2;
	PressNum = 0;
}

 然后给void CMFCApplication1View::OnLButtonDown(UINT nFlags, CPoint point)添加代码

void CMFCApplication1View::OnLButtonDown(UINT nFlags, CPoint point)
{// TODO: 在此添加消息处理程序代码和/或调用默认值
	CClientDC dc(this);//定义当前绘图区
	CRect rect;
    else if (MenuDrawType == 2) {//拿的是DDA
		//GetClientRect(&rect);//获得客户区大小
		
		if (PressNum == 0) {//第一次点击
			startP = point;
			endP = point;//使线段一直都在,终点始终是鼠标
			PressNum++;
		}
	
		else {//第二次点击
			endP = point;
			int dx = endP.x - startP.x;
			int dy = endP.y - startP.y;
			int steps, k;
			float xincrement, yincrement, x = startP.x, y = startP.y;
			if (abs(dx) > abs(dy)) 
				steps = abs(dx);
			else steps = abs(dy);
			xincrement = dx / float(steps);
			yincrement = dy / float(steps);
			SetPixel(dc, startP.x, startP.y, RGB(255, 0, 0));
			for (k = 0; k < steps; k++) {
				x += xincrement;
				y += yincrement;
				SetPixel(dc, x, y, RGB(255, 0, 0));
			}
			PressNum = 0;
			//GetCursorPos(&startP);
			//GetCursorPos(&endP);
		}
	}
	CView::OnLButtonDown(nFlags, point);//这句是自带的别删了
}

  • 0
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陆地桥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值