首先分析一下需求:
需求一:抗锯齿
需求二:画出一些线来将曲线分开。如下图所示
可以用平移加旋转来画出这样:
painter.drawLine(0,800,1600,800);
painter.save();
painter.translate(800,800);
painter.rotate(-30);
painter.drawLine(0,0,750,0);
painter.rotate(-30);
painter.drawLine(0,0,750,0);
painter.rotate(-30);
painter.drawLine(0,0,750,0);
painter.rotate(-30);
painter.drawLine(0,0,750,0);
painter.rotate(-30);
painter.drawLine(0,0,750,0);
painter.rotate(-30);
painter.drawLine(0,0,750,0);
painter.restore();
由于用的是平移+旋转,所以要将平移操作还原回去。
画一些度数标注:
代码如下:
QFont font("Buxton Sketch",30,QFont::Bold,true);
painter.setFont(font);
painter.setPen(Qt::white);
painter.translate(800,800);
painter.drawText(730,0,"0°");
painter.drawText(730 * qCos(qDegreesToRadians(30.0)),730 * qSin(qDegreesToRadians(-30.0)),"30°");
//注意这里的-30°
painter.drawText(730 * qCos(qDegreesToRadians(60.0)),730 * qSin(qDegreesToRadians(-60.0)),"60°");
painter.drawText(730 * qCos(qDegreesToRadians(90.0)),730 * qSin(qDegreesToRadians(-90.0)),"90°");
painter.drawText(730 * qCos(qDegreesToRadians(90.0)),730 * qSin(qDegreesToRadians(-90.0)),"90°");
painter.drawText(730 * qCos(qDegreesToRadians(120.0)),730 * qSin(qDegreesToRadians(-120.0)),"120°");
painter.drawText(730 * qCos(qDegreesToRadians(150.0)),730 * qSin(qDegreesToRadians(-150.0)),"150°");
painter.drawText(730 * qCos(qDegreesToRadians(180.0)),730 * qSin(qDegreesToRadians(-180.0)),"180°");
painter.setFont(QFont("Buxton Sketch",10,QFont::Bold,true));
painter.drawText(140,5,"10cm");
painter.drawText(280,5,"20cm");
painter.drawText(420,5,"30cm");
painter.drawText(560,5,"40cm");
painter.drawText(700,5,"50cm");