Qt绘制简单的风向玫瑰图代码

1、绘制简单的风向玫瑰图代码
2、主要使用QPainter
3、在子widget上绘制需要使用widget监视事件 eventfilter

update();//更新界面
        //镜头12
        QPainter painter1(WindRose12)/**/;
        painter1.begin(WindRose12);
        painter1.setFont(QFont("宋体"));
        painter1.translate(WindRose12->width() >> 1, WindRose12->height() >> 1);
        painter1.setRenderHint(QPainter::Antialiasing,true);
        //画同心圆
        painter1.setPen(QPen(Qt::black,2,Qt::DashDotDotLine));
        painter1.drawEllipse(-radius, -radius, radius << 1, radius << 1);
        painter1.drawEllipse(-(radius-20), -(radius-20), (radius-20) << 1, (radius-20) << 1);
        painter1.drawEllipse(-(radius-40), -(radius-40), (radius-40) << 1, (radius-40) << 1);
        painter1.drawEllipse(-(radius-60), -(radius-60), (radius-60) << 1, (radius-60) << 1);
        //画X轴和Y轴
        painter1.drawLine(QPoint(-radius,-radius>>8),QPoint(radius,-radius>>8));
        painter1.drawLine(QPoint(-radius>>8,-radius),QPoint(-radius>>8,radius));
        //标注方向
        painter1.setFont(QFont("Times", 20, QFont::Bold));
        painter1.drawText(QPoint(-radius>>8,-radius-offset-offset),"Camera12");
        painter1.drawText(QPoint(-radius>>8,-radius-offset),"N");
        painter1.drawText(QPoint(-radius>>8,radius+offset),"S");
        painter1.drawText(QPoint(-radius-offset,-radius>>8),"W");
        painter1.drawText(QPoint(radius+offset,-radius>>8),"E");
        //绘制弧形
        //gradientArc(&painter, radius, 0+90,  -(10), 30, qRgb(200, 200, 0));
        for(int i=0;i<angledis1.count();i++)
        {
            gradientArc(&painter1, radius*angledis1[i]/max1, 0+90-i*10,  -(10), 30, qRgb(200, 200, 0));
        }
        painter1.end();
原文地址:https://www.cnblogs.com/tsh292278/p/10436145.html