改进的 Bresenham 画线算法程序

这是一个改进的 Bresenham 画线算法程序,适用于不同倾斜角度的直线绘制。代码中包含了针对不同倾斜范围的优化处理,并提供了一个通用的画图函数接口drawpixel,以适应不同环境下的画图需求。在主函数中,通过调用 IntBresenhamline 进行直线绘制,并在 CGraphicsView::OnDraw 中使用 CDC 对象进行设备上下文操作,实现了在窗口上的图形绘制。
摘要由CSDN通过智能技术生成
//  By rappizit@yahoo.com.cn
// 2007-10-15 第 2 版

#define  ABS(a) (a >= 0 ? a : -a)
#define  SWAP(a, b) {int t = a; a = b; b = t;}

//  改进的 Bresenham 画线算法程序
//  最后一个形参是画图函数 drawpixel (int x, int y, int color) 的指针,在不同运行环境下调用不同的画图函数
void  IntBresenhamline ( int  x0,  int  y0,  int  x1,  int  y1,  int  color,  void ( * drawpixel)( int int int ))
{
    
int  dx  =  x1  -  x0, dy  =  y1  -  y0;
    
if  (ABS(dx)  >=  ABS(dy))
        {
        
if  (x0  >  x1)
            {
            SWAP(x0, x1);
            SWAP(y0, y1);
            dx 
=   - dx;
            dy 
=   - dy;
            }
        
if  (dy  >=   0 )
            {
            
//  直线的倾斜角位于 [0, pi / 4]
             for  ( int  x  =  x0, y  =  y0, e  =
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值