辐射渐变
来源:互联网 发布:会计资格证网络课程 编辑:程序博客网 时间:2024/04/29 14:12
1.代码片段
void Widget::paintEvent(QPaintEvent *event){ QPainter painter(this); // painter.translate(QPoint); 重新设置坐标中心点,默认为左上角为(0,0) /*painter.translate(QPointF(width()/2.0,height()/2.0)); 可将窗口中心设置为坐标中心*/ // pPainter->rotate(60); 将坐标轴旋转60度,逆时针 QRadialGradient radialGradient(310,110,100,310,110); //创建了一个QRadialGradient对象实例,参数分别为中心坐标,半径长度和焦点坐标,如果需要对称那么中心坐标和焦点坐标要一致 radialGradient.setColorAt(0,Qt::green); radialGradient.setColorAt(0.2,Qt::white); radialGradient.setColorAt(0.4,Qt::blue); radialGradient.setColorAt(0.6,Qt::red); radialGradient.setColorAt(1.0,Qt::yellow); painter.setBrush(QBrush(radialGradient)); painter.drawEllipse(210,10,200,200);//在相应的坐标画出来#if 0 QPointF pieRectTopLeftPot(0-m_nRadius,0-m_nRadius); QPointF pieRectBottomRightPot(0+m_nRadius,0+m_nRadius); QRectF pieRect=QRectF(pieRectTopLeftPot,pieRectBottomRightPot); //左上角的点和右下角的点确定一个正方形 //将表盘分区间以不同颜色显示 //红色部分 QRadialGradient firstGradient(m_centerPointF,m_nRadius,m_centerPointF); firstGradient.setColorAt(0,Qt::transparent); firstGradient.setColorAt(0.6,Qt::transparent); firstGradient.setColorAt(0.61,Qt::transparent); firstGradient.setColorAt(0.8,Qt::transparent); firstGradient.setColorAt(1.0,Qt::transparent); painter.setBrush(firstGradient); painter.drawPie(pieRect,225*16, 90*16); //画一个饼图,起始角度和角度范围差 /* Qt中,圆形以三点钟方向为0度,逆时针360度回归0度*/ //黄色部分 QRadialGradient secondGradient(m_centerPointF,m_nRadius,m_centerPointF); secondGradient.setColorAt(0,Qt::transparent); secondGradient.setColorAt(0.6,Qt::transparent); secondGradient.setColorAt(0.61,QColor(229,229,229)); secondGradient.setColorAt(0.8,QColor(229,229,229)); secondGradient.setColorAt(1.0,QColor(229,229,229)); painter.setBrush(secondGradient); painter.drawPie(pieRect,315*16,270*16); /*运用辐射渐变,画出一个环形(以前总以为Qt中的表盘环形是两个直径不一致的圆叠加而成的,没想到别人是这样画的,哈哈)*/ QRadialGradient secondGradient(m_centerPointF,m_nRadius,m_centerPointF); secondGradient.setColorAt(0,Qt::transparent); secondGradient.setColorAt(0.6,Qt::transparent); secondGradient.setColorAt(0.61,Qt::red); secondGradient.setColorAt(0.8,Qt::red); secondGradient.setColorAt(1.0,Qt::red); pPainter.setBrush(secondGradient); pPainter.drawPie(pieRect,225*16,-abs(value)*16); //顺时针为负数,逆时针为正,调整好起始角度,可完成一个环形进度条#endif}
2.总结
之前写过一篇Qt画图的博客,但是都是最简单的一些,最近碰到了一些需要自定义的控件,于是把别人写的拿出来总结学习了一下,后期还需要继续学习补充!
阅读全文
0 0
- 辐射渐变
- 关于qt中的辐射渐变的使用 QRadialGradient
- 辐射
- 辐射
- 渐变
- 渐变
- 渐变
- 渐变
- 渐变
- 渐变
- 渐变
- 渐变
- 渐变
- 渐变
- 渐变
- 渐变
- 注意辐射!!!!!!!!
- 手机辐射
- 背景图片铺满整个屏幕
- 从零到一学Maven——宏观把控
- 算法-寻找两个链表的第一个公共结点
- git
- java 分拣存储
- 辐射渐变
- CMake2:版本号配置与头文件生成
- Python中的递归函数及二分查找算法如何使用?
- Logistic回归总结
- B
- 框架学习系列 mybatis 第二篇 mybatis的工作原理
- fdfs合并存储
- java URLConnection中的 Content-Type 与 ajax 的contentType
- 在机顶盒应用上,如何实现长按,并可以持续操作的效果