speedpainter.cpp 1.6 KB

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