在qt中用中点直线算法画直线
时间: 2023-05-23 20:00:52 浏览: 238
你可以使用QPainter类的drawLine函数以及中点直线算法来画直线,示例代码如下:
```cpp
void drawLine(QPainter &painter, int x1, int y1, int x2, int y2)
{
int dx = abs(x2 - x1);
int dy = abs(y2 - y1);
int x = x1;
int y = y1;
int sx = x1 < x2 ? 1 : -1;
int sy = y1 < y2 ? 1 : -1;
int err = dx - dy;
while (x != x2 || y != y2)
{
painter.drawPoint(x, y);
int e2 = 2 * err;
if (e2 > -dy)
{
err -= dy;
x += sx;
}
if (e2 < dx)
{
err += dx;
y += sy;
}
}
}
```
使用方法:
```cpp
QPainter painter(this);
painter.setPen(QPen(Qt::black, 2, Qt::SolidLine, Qt::RoundCap));
drawLine(painter, 100, 100, 300, 300);
```
这段代码将在QWidget上画一条从(100,100)到(300,300)的直线。