找回密码
 立即注册
收起左侧

平面圆环

9
回复
9955
查看
[复制链接]
累计签到:94 天
连续签到:1 天
来源: 2013-12-9 13:14:39 显示全部楼层 |阅读模式
1Qter豆
有没有亲绘制过1/4的平面圆环,并给1/4圆环上色的?急求。

最佳答案

查看完整内容

画弧要使用drawArc()函数,因为这里要进行填充,所以可能需要使用路径。 至于画弧等函数中的角度问题,我简单说下吧: drawArc(rectangle, startAngle, spanAngle)有三个参数,第一个是rectangle矩形,保证这个弧度在这个矩形中,例如:弧度是360度成为一个圆的时候,那么圆心就是矩形的中心。而起始角度startAngle为0时在时钟的3点钟方向,顺时针为负值,逆时针为正值,例如起始角度为-90就是在6点钟方向,为90就是在12点钟方 ...
回复

使用道具 举报

累计签到:1572 天
连续签到:1 天
2013-12-9 13:14:40 显示全部楼层
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
回复

使用道具 举报

累计签到:1572 天
连续签到:1 天
2013-12-9 14:09:55 显示全部楼层
1/4之一的平面圆环是什么效果呢?上成什么样子的颜色。
回复

使用道具 举报

累计签到:94 天
连续签到:1 天
2013-12-9 14:28:04 显示全部楼层
yafeilinux 发表于 2013-12-9 14:09
1/4之一的平面圆环是什么效果呢?上成什么样子的颜色。

我不会上传图片,所以不能把图片发上来,颜色是随意的,平面圆环的效果就像是没有支架的扇子那种形状。
回复

使用道具 举报

累计签到:1572 天
连续签到:1 天
2013-12-9 15:15:50 显示全部楼层
Cherish 发表于 2013-12-9 14:28
我不会上传图片,所以不能把图片发上来,颜色是随意的,平面圆环的效果就像是没有支架的扇子那种形状。 ...

就是画曲线吗?Qt中有相应的函数的。

上传图片可以在发帖的时候选择高级模式,里面就可以上传图片了。
回复

使用道具 举报

累计签到:94 天
连续签到:1 天
2013-12-9 20:42:26 显示全部楼层
yafeilinux 发表于 2013-12-9 15:15
就是画曲线吗?Qt中有相应的函数的。

上传图片可以在发帖的时候选择高级模式,里面就可以上传图片了。 ...


我想要的即使这种效果,在每两个圆之间从同一个位置,能够随意的上任何角度的颜色。我不知道怎么去控制这个角度,然后去上色。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

累计签到:94 天
连续签到:1 天
2013-12-12 12:42:05 显示全部楼层
yafeilinux 发表于 2013-12-10 20:46
画弧要使用drawArc()函数,因为这里要进行填充,所以可能需要使用路径。

至于画弧等函数中的角度问题, ...

非常感谢,我试过了。但是我还有个问题就是,paintEvent函数的调用在程序运行之后只被调用一次吗?我想能不能设置一个定时器,时间到了再去给圆环上色。
回复

使用道具 举报

累计签到:1572 天
连续签到:1 天
2013-12-13 21:34:43 显示全部楼层
Cherish 发表于 2013-12-12 12:42
非常感谢,我试过了。但是我还有个问题就是,paintEvent函数的调用在程序运行之后只被调用一次吗?我想能 ...

可以啊,调用update()函数即可。美调用一次就执行一次paintEvent
回复

使用道具 举报

累计签到:94 天
连续签到:1 天
2013-12-17 20:46:59 显示全部楼层
yafeilinux 发表于 2013-12-13 21:34
可以啊,调用update()函数即可。没调用一次就执行一次paintEvent

嗯,我试过了,很好用。上图的绘图效果能有QML来实现吗?
回复

使用道具 举报

累计签到:1572 天
连续签到:1 天
2013-12-18 15:36:27 显示全部楼层
Cherish 发表于 2013-12-17 20:46
嗯,我试过了,很好用。上图的绘图效果能有QML来实现吗?

理论上可以,自己尝试一下吧。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了