// 用中点Bresenham算法画线 void CExperiment_Frame_OneView::Mid_Bresenham(int X0, int Y0, int X1, int Y1) { // 计算增量和初始坐标 int dx = X1 - X0; int dy = Y1 - Y0; int x = X0; int y = Y0;

// 判断斜率
if (dx > dy) // 斜率小于1
{
    int D = dx - 2 * dy; // 初始化判定变量
    while (x <= X1) // 沿x轴方向画点
    {
        DrawPixel(x, y); // 画像素点
        if (D < 0) // 判定
        {
            y++; // y坐标加1
            D += x * dx - 2 * dy; // 更新判定变量
        }
        else
        {
            D -= 2 * dy; // 更新判定变量
        }
        x++; // x坐标加1
    }
}
else // 斜率大于等于1
{
    int D = dy - 2 * dx; // 初始化判定变量
    while (y <= Y1) // 沿y轴方向画点
    {
        DrawPixel(x, y); // 画像素点
        if (D < 0) // 判定
        {
            x++; // x坐标加1
            D += 2 * dy - 2 * dx; // 更新判定变量
        }
        else
        {
            D -= 2 * dx; // 更新判定变量
        }
        y++; // y坐标加1
    }
}

}


原文地址: https://www.cveoy.top/t/topic/lLCK 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录