Qt 绘制仪表盘
来源:互联网 发布:天银网络 编辑:程序博客网 时间:2024/05/29 16:42
1. 首先准备素材,一个表盘,一个指针
2. 计算旋转圆心及转动角度
通过画图软件测量一下表盘中心的坐标,及指针中心的坐标
大概表盘的中心为(163,163),同样指针的中心位置为(14,110)
转动角度可以大概测量一下,应该为(-120,120)度
3. 转动操作
有了这些数据就可以来绘制表盘了
//设置表盘的中心#define CenterPoint_X 163#define CenterPoint_Y 163//设置指针的中心,注意这里是负的,因为一会我们要平移坐标系#define NeedleCenter_X -14 //#define NeedleCenter_Y -110//指针图片的宽度和高度#define NeedlePic_W 28#define NeedlePic_H 123//指针可以活动的最小最大值#define Needle_MinAngle -120#define Needle_MaxAngle 120//每一次Qt刷新,指针改变的的度数#define Needle_Step 1//初始化SPDWidget::SPDWidget(QWidget *parent) : QWidget(parent){ this->resize(320, 320); pix_Needle.load("./res/style_1/needle.png"); d_Pointer_angle_now = Needle_MinAngle; //start angle}//画图void SPDWidget::paintEvent(QPaintEvent *event){ //每次调用这个函数,改变角度值 set_angle(); QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing, true); painter.setRenderHint(QPainter::SmoothPixmapTransform); //----------------------------------------- painter.save(); //设置新的圆心,其实也是旋转中心 painter.translate(CenterPoint_X, CenterPoint_Y); //旋转一个角度 painter.rotate(d_Pointer_angle_now); //画指针,注意是在指针中心的反方向开始画 painter.drawPixmap(NeedleCenter_X, NeedleCenter_Y, NeedlePic_W, NeedlePic_H, pix_Needle); //使原点复原 painter.restore();}//测试函数,在最小与最大范围之间摆动void SPDWidget::set_angle(){ static int iDirection = 1; if (d_Pointer_angle_now >= Needle_MaxAngle) { iDirection = -1; } else if (d_Pointer_angle_now <= Needle_MinAngle) { iDirection = 1; } //每次改变的角度值 d_Pointer_angle_now = d_Pointer_angle_now + iDirection * Needle_Step;}
1 0
- Qt 绘制仪表盘
- Qt 绘制仪表盘
- CANVAS绘制仪表盘
- canvas 绘制仪表盘
- Canvas---Canvas绘制钟表,仪表盘
- 润乾集算报表绘制企业仪表盘
- Qt Creater 制作汽车仪表盘
- Qt实战开发-仪表盘制作
- canvas绘制简易百分比仪表盘dashboard
- 3.canvas实现刻度仪表盘的绘制
- 仪表盘
- 仪表盘
- 仪表盘
- 仪表盘
- 仪表盘
- Android绘图系列(三)——自定义View绘制仪表盘
- QT中速度仪表盘控件QMeter的安装方法
- Qt paintEvent绘制窗体
- 第一篇博客
- Java设计模式——状态模式(STATE PATTERN)
- 【LeetCode】496. Next Greater Element I
- 块匹配模型的还原
- bzoj 3238 ahoi2013差异 后缀数组
- Qt 绘制仪表盘
- Tomcat性能调优-JVM监控与调优
- java synchronized详解
- 坐标移动
- 牛顿迭代法(Newton's Method)
- 以太网协议|MAC地址|IP协议|子网掩码|ARP协议|UDP协议|TCP协议|静态IP地址|动态IP地址|DHCP协议|网关|DNS协议等一串互联网协议名称一站式解读
- 教你认清MVC,MVP和MVVM
- Codeforces Round #404 (Div. 2) D. Anton and School
- Java中抽象类和抽象方法的区别