int x,y,x0, y0, x1, y1,a,b; int d0, d1, d2; float k; DCPoint->SetROP2(R2_COPYPEN);//绘图方法为直接画 //直线端点由鼠标确定后存放在group[0]、group[1] x0 = group[0].x; y0 = group[0].y; x1 = group[1].x; y1 = group[1].y; a = y0 - y1; b = x1 - x0; d0 = 2 * a + b; d1 = a; d2 = a + b; if (x0 == x1 && y0 == y1)return; if (x0 == x1)//垂直线,k不存在 { if (y0 > y1) { x = y0; y0 = y1; y1 = x; } for (x = y0; x <= y1; x++) { DCPoint->SetPixel(x0, x, RGB(255, 0, 0)); } return; } if (y0 == y1)//水平线,k=0 { if (x0 > x1) { x = x0; x0 = x1; x1 = x; } for (x = x0; x <= x1; x++) { DCPoint->SetPixel(x, y0, RGB(255, 0, 0)); } return; } if ((!x0 == x1) && (!y0 == y1)) { k = (-a) / b; x = x0; y = y0; for (; x <= x1;) { DCPoint->SetPixel(x, y, RGB(255, 0, 0)); if (d0 <= 0) { x++, y++, d0 += d2; } else { x++, d0 += d1; } }
时间: 2024-04-04 09:07:53 浏览: 91
Keil MDK-ARM各种数据类型占用的字节数 char short int float double
5星 · 资源好评率100%
这段代码是画一条直线的代码,其中涉及到了直线的斜率计算和 Bresenham 算法。具体来说,代码中通过给定的两个点坐标,计算出直线的斜率 k,并根据斜率 k 和 Bresenham 算法来逐点绘制直线。在绘制过程中,通过判断斜率和点的位置关系来确定绘制的方向和下一个点的位置。最后,使用 SetPixel 函数来绘制像素点。
阅读全文