|
Cherish 发表于 2013-12-9 20:42
我想要的即使这种效果,在每两个圆之间从同一个位置,能够随意的上任何角度的颜色。我不知道怎么去控制这 ...
画弧要使用drawArc()函数,因为这里要进行填充,所以可能需要使用路径。
至于画弧等函数中的角度问题,我简单说下吧:
drawArc(rectangle, startAngle, spanAngle)有三个参数,第一个是rectangle矩形,保证这个弧度在这个矩形中,例如:弧度是360度成为一个圆的时候,那么圆心就是矩形的中心。而起始角度startAngle为0时在时钟的3点钟方向,顺时针为负值,逆时针为正值,例如起始角度为-90就是在6点钟方向,为90就是在12点钟方向。最后是spanAngle跨越角度,就是从起始角度弧度跨越的度数,也是顺时针为负值,逆时针为正值。
如果你还是不太明白,就要多实践几次:
例1:
void Widget::paintEvent(QPaintEvent *){
QRectF rectangle(0.0, 0.0, 100.0, 100.0);
int startAngle = 0 * 16; int spanAngle = -360 * 16;
QPainter painter(this); painter.drawLine(50, 50, 100, 50); painter.drawArc(rectangle, startAngle, spanAngle);
}
效果:
例2:
void Widget::paintEvent(QPaintEvent *){
QRectF rectangle(0.0, 0.0, 100.0, 100.0);
int startAngle = 0 * 16; int spanAngle = -180 * 16;
QPainter painter(this); painter.drawLine(50, 50, 100, 50); painter.drawArc(rectangle, startAngle, spanAngle);
}
效果:
例3:
void Widget::paintEvent(QPaintEvent *){
QRectF rectangle(0.0, 0.0, 100.0, 100.0);
int startAngle = 90 * 16; int spanAngle = -180 * 16;
QPainter painter(this); painter.drawLine(50, 50, 100, 50); painter.drawArc(rectangle, startAngle, spanAngle);
}
如果画弧度可以熟练掌握了,那么画圆环应该很容易的,使用路径即可。
建议先把所有圆环换好,当使用的时候在指定的位置画圆环即可。 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|