logopainter.cpp 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #include "logopainter.h"
  2. #include <QTimer>
  3. #include <QPainter>
  4. #include <QPropertyAnimation>
  5. #include <QtDebug>
  6. #define EDGEANGLE 126.0
  7. #define ANGLE 1.5
  8. LogoPainter::LogoPainter(QWidget *parent) : QOpenGLWidget(parent)
  9. {
  10. angle = -126.0;
  11. //angle=0;
  12. pix = QPixmap(":/images/SpeedRateBackGround.png");
  13. pointer = QPixmap(":/images/needle.png");
  14. timer = new QTimer(this);
  15. connect(timer,SIGNAL(timeout()),this,SLOT(slotUpdate()));
  16. timer->start(1);
  17. }
  18. void LogoPainter::slotUpdate()
  19. {
  20. // qDebug()<<"LogoPainter::angle:"<<(angle + 360 - last_angle)%360;
  21. // last_angle = angle;
  22. if (angle <= -EDGEANGLE) {
  23. angle = -EDGEANGLE;
  24. flag = true;
  25. } else if (angle >= EDGEANGLE) {
  26. angle = EDGEANGLE;
  27. flag = false;
  28. }
  29. if (flag) {
  30. angle += ANGLE;
  31. } else {
  32. angle -= ANGLE;
  33. }
  34. update();
  35. }
  36. void LogoPainter::initializeGL()
  37. {
  38. initializeOpenGLFunctions();
  39. glClearColor(0.0,0.0,0.0,0.0);
  40. glBlendFunc(GL_SRC_ALPHA,GL_ONE);
  41. glEnable(GL_BLEND);
  42. }
  43. void LogoPainter::resizeGL(int width, int height)
  44. {
  45. }
  46. void LogoPainter::paintGL()
  47. {
  48. QPainter painter;
  49. painter.begin(this);
  50. painter.fillRect(QRect(0,0,width(),height()), Qt::black);
  51. painter.drawPixmap(0,0,pix);
  52. painter.translate(314,374); //移动到一个圆心
  53. //painter.rotate(angle++%360); //旋转一定角度
  54. painter.rotate(angle); //旋转一定角度
  55. painter.setRenderHint(QPainter::SmoothPixmapTransform,true);
  56. painter.drawPixmap(-10,-256,pointer);
  57. painter.setRenderHint(QPainter::SmoothPixmapTransform,false);
  58. painter.end();
  59. }