繁体   English   中英

在Qt中绘制多个圆圈

[英]drawing multiple circles in Qt

我有一个这样绘制代码的代码:

QList< QPair<double, double> > vertices;
//constructor
vertices.clear();
calculateWhiteVetices();

//drawing methods
void MyGLWidget::drawWhiteCircle() {
    int n = vertices.count();
    qglColor(Qt::white);
    glBegin(GL_POLYGON);
    for(int i = 0; i < n; i++) {
        glVertex2f(vertices[i].first, vertices[i].second);
    }
    glEnd();
}


void MyGLWidget::calculateWhiteVetices()
{
    double a = 3.14 / 90;
    vertices.append(QPair<double, double> (0,0));
    for(int i = 0; i <= 360; i++) {
        vertices.append(QPair<double, double> (cos(i * a) * radius, sin(i * a) * radius));
    }
}

//paintGL method
glPushMatrix();
glTranslatef(randx , randy , 0);
drawWhiteCircle();
glPopMatrix();

现在我想在这里添加另一个圆圈,但是有一个问题; 颜色混合在一起,形状被破坏。 这是代码:

QList< QPair<double, double> > blueVertices;
//constructor
blueVertices.clear();
calculateBlueVetices();

在新方法blueVertices每个vertices替换为blueVertices ,然后将这些方法恰好置于白色圆圈的方法旁边。 并将这部分代码放在glPopMatrix(); paintGL方法中。

//paintGL method
glPushMatrix();
glTranslatef(randx-0.2f , randy-0.2f , 0);
drawBlueCircle();
glPopMatrix();

由于我的定义不正确,我知道顶点在某处混合,但我不知道在哪里。 我这是什么错 这是我的输出:

您可以并排绘制一定距离的两个圆,以验证您生成的顶点正确。 刚开始时,您可以尝试使用glTranslatef(radius , 0 , 0);白色圆圈glTranslatef(radius , 0 , 0); 和蓝色带glTranslatef( -radius , 0 , 0); 检查两个顶点是否都需要顶点

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM