游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1606|回复: 1

求画直线的C代码

[复制链接]

4

主题

18

帖子

32

积分

注册会员

Rank: 2

积分
32
发表于 2004-6-5 17:08:00 | 显示全部楼层 |阅读模式
诺大个中国互联网,找不到画直线的代码,全是抄袭之作

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20527
发表于 2004-6-6 00:24:00 | 显示全部楼层

Re:求画直线的C代码

给你一段代码,你可以参考一下。

// -------------------------------------------------------
// Name: DrawLine()
// Describe: 绘线(基于Buffer)
// -------------------------------------------------------
HRESULT CDisplay:rawLine( LP_BITMAPX pBitmap, int nBeginX, int nBeginY, int nEndX, int nEndY, PIXEL Color )
{
#if _DEBUG
    ASSERT(pBitmap);
    ASSERT(pBitmap->GetBuffer());
#endif

    register int t;
    int distance;
    int x = 0, y = 0, delta_x, delta_y, incx, incy;
    delta_x = nEndX-nBeginX;
    delta_y = nEndY-nBeginY;
    if(delta_x > 0)
        incx = 1;
    else if(delta_x == 0)
        incx = 0;
    else
    {
        delta_x = -delta_x;
        incx = -1;
    }
    if(delta_y > 0)
        incy = 1;
    else if(delta_y == 0)
        incy = 0;
    else
    {
        delta_y = -delta_y;
        incy = -1;
    }
    if(delta_x > delta_y)
        distance = delta_x; /* **** */
    else
        distance = delta_y;
    for(t=0; t<distance+2; t++)
    {
        DrawPixel(pBitmap, nBeginX, nBeginY, Color);
        x += delta_x;
        y += delta_y;
        if(x > distance)
        {
            x -= distance;
            nBeginX += incx;
        }
        if(y > distance)
        {
            y -= distance;
            nBeginY += incy;
        }
    }
    return S_OK;
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-7-1 13:24

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表