我在两点之间使用QPainterPath
绘制一条线,如下所示:
QPainterPath line;
line.moveTo(start_p);
line.lineTo(end_p);
QPen paintpen(Qt::black);
paintpen.setWidth(1);
painter->setRenderHint(QPainter::Antialiasing);
painter->setBrush(Qt::SolidPattern);
painter->setPen(paintpen);
painter->drawPath(line);
我将边界矩形定义为:
QRectF Line::boundingRect() const
{
return QRectF(start_p.x(), start_p.y(), end_p.x(), end_p.y());
}
我在以下情况下正确画线:
start_p.x() < end_p.x()
和
start_p.y() < end_p.y()
如何定义边界矩形,以便无论两点坐标(start_p和end_p)之间的关系如何,都能正确绘制直线?
答案 0 :(得分:7)
您可以尝试规范化矩形:
QRectF Line::boundingRect() const
{
return QRectF(start_p.x(), start_p.y(), end_p.x(), end_p.y()).normalized();
}
答案 1 :(得分:3)
你可以: -
如果您只想要一条线,QGraphicsLineItem可能是最好的方式。
答案 2 :(得分:0)
您可以使用QPainterPath::boundingRect
返回QPainterPath
的边界矩形。您可以将画家路径保留为类成员,并在boundingRect
函数中访问它:
QRectF Line::boundingRect() const
{
return line.boundingRect();
}