Qt画一个带孔的环/圆
Qt drawing a ring / circle with a hole
我需要用QPainter画一个圆。当我使用 drawEllipse 函数时:
void UserClass::Draw(QPainter &painter) {
painter.save();
painter.setBrush( GetColor() );
QPoint centerPosition = GetCenterPosition();
painter.drawEllipse( centerPosition, m_CircleOuterRadius, m_CircleOuterRadius);
painter.setBrush(QColor(0, 0, 0, 0));
painter.drawEllipse( centerPosition, m_CircleInnerRadius, m_CircleInnerRadius);
painter.restore();
}
不幸的是结果不是我想要的。我想让内圈不被填满。这就是为什么我将 alpha 值设为零,但当然它不起作用。我怎么能有一个直到一定半径才用 qt 的圆?
您应该创建一个 QPainterPath
,然后通过 addEllipse()
添加两个圆圈,首先是外部,然后是内部。这将有效地为您提供一个形状,即外圆和内圆打孔。
然后用绿色画笔填充画家路径,这将产生一个空心环。之后,如果你想要白色的轮廓,你也可以用白笔在路径上描画。
另请注意,画家路径只能创建一次并存储以供重复使用,而不是每次重绘时都重新创建。
我需要用QPainter画一个圆。当我使用 drawEllipse 函数时:
void UserClass::Draw(QPainter &painter) {
painter.save();
painter.setBrush( GetColor() );
QPoint centerPosition = GetCenterPosition();
painter.drawEllipse( centerPosition, m_CircleOuterRadius, m_CircleOuterRadius);
painter.setBrush(QColor(0, 0, 0, 0));
painter.drawEllipse( centerPosition, m_CircleInnerRadius, m_CircleInnerRadius);
painter.restore();
}
不幸的是结果不是我想要的。我想让内圈不被填满。这就是为什么我将 alpha 值设为零,但当然它不起作用。我怎么能有一个直到一定半径才用 qt 的圆?
您应该创建一个 QPainterPath
,然后通过 addEllipse()
添加两个圆圈,首先是外部,然后是内部。这将有效地为您提供一个形状,即外圆和内圆打孔。
然后用绿色画笔填充画家路径,这将产生一个空心环。之后,如果你想要白色的轮廓,你也可以用白笔在路径上描画。
另请注意,画家路径只能创建一次并存储以供重复使用,而不是每次重绘时都重新创建。