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();