中点画线完整算法c语言,中点画线算法

本文探讨了中点画线算法的实现,它与Bresenham算法有相似之处。博主通过代码展示了如何寻找直线两端点的中点并递归绘制。虽然递归方法对初学者来说可能较为复杂,但通过实例代码,可以更好地理解这一过程。代码中使用了CDC指针进行设备上下文操作,适合在特定的绘图环境中调用。
摘要由CSDN通过智能技术生成

在网上看中点画线算法,很多说法是中点画线类似于Breshehanm画线。

但是助教说的中点画线是寻找直线两端点的中点进行画点,然后分别递归左右半段直线。

当年不好好学习,递归掌握的不好,现在自己试了试,可谓小费时。

代码如下:

/************中点画线***************/

void CDrawLine::DrawMPLine(CPoint a, CPoint b, CDC * pDC)

{

CPoint ptMiddle;

ptMiddle.x = (a.x + b.x) / 2;

ptMiddle.y = (a.y + b.y) / 2;

if((a.x - b.x)*(a.x - b.x) + (a.y - b.y)*(a.y - b.y) <= 2)

{

pDC->SetPixel(a.x, a.y, RGB(255, 0, 0));

}

else

{

DrawMPLine(a, ptMiddle, pDC);

DrawMPLine(ptMiddle, b, pDC);

}

}

风格不好,参数CDC * pDC是使用的OnDraw函数中的CDC指针,因为该函数只在OnDraw函数中调用了。

想要去掉该参数的话自己在函数体内部生命CDC指针,使用完后delete就行了。

0818b9ca8b590ca3270a3433284dd417.png

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值