#include <QPainter>
#include <QPen>
#include <QDebug>
#include <QLinearGradient>
#include <QTimer>
#include <QTime>
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
this->setStyleSheet("background-color:black");//设置窗口背景色为黑色
timer = new QTimer();
connect(timer,SIGNAL(timeout()),this,SLOT(timerTimeOut()));
timer->start(10);
}
Widget::~Widget()
{
delete ui;
}
void Widget::resizeEvent(QResizeEvent *event)
{
if(this->width() > this->height()){
point = QPoint((this->width()-this->height())/2+(this->height()-12)/2,this->height()/2);
i_diameter = this->height()-12;
}else{
point = QPoint(this->width()/2,(this->height()-this->width())/2+(this->width()-12)/2);
i_diameter = this->width()-12;
}
}
void Widget::timerTimeOut()
{
timer->start(10);
d_angle += 3.14/720;
if(d_angle >= 6.28){
d_angle = 0;
}
update();
}
void Widget::paintEvent(QPaintEvent *event)
{
QPainter p_painter(this);
//反锯齿
p_painter.setRenderHint(QPainter::Antialiasing);
p_painter.drawPixmap(0,0,this->width(),this->height(),paintWidget());
QWidget::paintEvent(event);
}
QPixmap Widget::paintWidget()
{
QPixmap pixmap(this->width(),this->height());
QPainter p_painter(&pixmap);
QPen pen;
QTime timedebug;
timedebug.start();
//反锯齿
p_painter.setRenderHint(QPainter::Antialiasing);
pixmap.fill(Qt::black);
pen.setColor(Qt::green);
p_painter.setPen(pen);
pen.setColor(Qt::gray);
p_painter.setPen(pen);
p_painter.drawLine(point.x(),point.y()-i_diameter/2-10,point.x(),point.y()+i_diameter/2+10);//画坐标
p_painter.drawLine(point.x()-i_diameter/2-10,point.y(),point.x()+i_diameter/2+10,point.y());
pen.setColor(Qt::green);
p_painter.setPen(pen);
for(int i=0; i<6; i++){
p_painter.drawEllipse(point.x()-i_diameter*0.2*i/2,point.y()-i_diameter*0.2*i/2,i_diameter*0.2*i,i_diameter*0.2*i);
}
QConicalGradient conical_gradient(point,(6.28-d_angle)/6.28*720);//定义圆心和渐变的角度
conical_gradient.setColorAt(0,Qt::green);
conical_gradient.setColorAt(0.2,QColor(255,255,255,0));
p_painter.setBrush(conical_gradient);
p_painter.drawEllipse(point.x()-i_diameter/2,point.y()-i_diameter/2,i_diameter,i_diameter);
qDebug()<<"time_end="<<timedebug.elapsed()<<"ms";
return pixmap;
}

五里之南
- 粉丝: 89
最新资源
- (2025)社工初级考试试题附含答案.docx
- (2025)社工初级考试试题含答案.docx
- 电信5G协优资格认证考试题库附含答案.docx
- 电信协优(含LTE、5G)资格认证考试题库附答案.docx
- 电信协优(含LTE、5G)资格认证考试题库附含答案.docx
- 电信协优(含LTE、5G)资格认证题库附答案.docx
- (2025)电梯安全管理员题库及答案.doc
- (2025)电业安全工作规程考试试题及答案.doc
- (2025)电业安全工作规程试题及答案.doc
- (2025)吊车司机安全培训考试题库及答案.doc
- (2025)辐射安全与防护培训考试题及答案.doc
- (2025)辐射安全与防护培训题库(含答案).doc
- (2025)辐射安全与防护培训题库及答案.doc
- 2025安全生产培训教育考试题库及答案.doc
- 2025安全生产培训教育考试试题及答案.doc
- 2025安全生产培训教育试题及答案.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


