Qt 画一个带孔的圆环/圆

Kad*_*mir 4 c++ qt qpainter

我需要用 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();  
}
Run Code Online (Sandbox Code Playgroud)

不幸的是结果不是我想要的。我想让内圈不被填满。这就是为什么我将 alpha 值设置为零,但当然它不起作用。我怎么能有一个圆,直到 qt 达到某个半径?

在此处输入图片说明

dte*_*ech 5

您应该创建一个QPainterPath然后通过 将两个圆圈添加到它addEllipse(),首先是外部,然后是内部。这将有效地为您提供一个形状,即外圆与内圆打孔。

然后用绿色画笔填充画家路径,这将产生一个空心环。之后,如果你想要白色轮廓,你也可以用白色笔在路径上描边。

另请注意,画家路径只能创建一次并存储以供重用,而不是每次重绘时都重新创建。