QGraphicsItem画五角星 C++
时间: 2024-01-24 22:08:18 浏览: 92
以下是用QGraphicsItem画五角星的C++代码:
```cpp
#include <QGraphicsItem>
#include <QPainter>
class StarItem : public QGraphicsItem
{
public:
StarItem(QGraphicsItem *parent = nullptr) : QGraphicsItem(parent) {}
QRectF boundingRect() const override
{
return QRectF(-50, -50, 100, 100); // 设置包围矩形
}
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr) override
{
Q_UNUSED(widget);
painter->setPen(Qt::NoPen); // 不画边框线
painter->setBrush(Qt::yellow); // 填充黄色
// 计算五角星10个顶点的坐标
QPointF points[10];
qreal angle = 2 * 3.1416 / 5; // 每个角的夹角
qreal radius1 = 50; // 外圆半径
qreal radius2 = radius1 * qSin(angle / 2) / qSin(3 * angle / 2); // 内圆半径
for (int i = 0; i < 5; ++i) {
points[2 * i] = QPointF(radius1 * qCos(i * angle - angle / 2), radius1 * qSin(i * angle - angle / 2));
points[2 * i + 1] = QPointF(radius2 * qCos(i * angle + angle / 2), radius2 * qSin(i * angle + angle / 2));
}
painter->drawConvexPolygon(points, 10); // 画五角星
}
};
```
使用`StarItem`类创建一个五角星的QGraphicsItem对象,然后添加到场景中即可。
阅读全文