Qt 绘制仪表盘
2017-09-16 20:42
351 查看
1. 首先准备素材,一个表盘,一个指针
2. 计算旋转圆心及转动角度
通过画图软件测量一下表盘中心的坐标,及指针中心的坐标
大概表盘的中心为(163,163),同样指针的中心位置为(14,110)
转动角度可以大概测量一下,应该为(-120,120)度
3. 转动操作
有了这些数据就可以来绘制表盘了
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::Antialiasin 4000 g, 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; }
相关文章推荐
- Qt 绘制仪表盘
- QT中文字的绘制
- Qt自定义委托在QTableView中绘制控件、图片、文字
- Qt中的图形绘制
- Qt 利用 Qwt 绘制动态曲线
- Qt绘制带箭头的线段
- Qt绘制贝塞尔曲线例程
- QT 绘制按钮 paintEvent enterEvent leaseEvent mouseEvent
- Android绘图系列(三)——自定义View绘制仪表盘
- Qt如何绘制边框,如何画一条线
- Qt开发绘制多个设备的流量曲线图
- QT使用QCustomPlot 绘制柱状图
- qt中如果使用svg格式的图片在QPainter中绘制图形
- QT绘制圆弧遇到缺失问题
- Canvas---Canvas绘制钟表,仪表盘
- Qt customplot插件中绘制实时时间堆积曲线
- 【Qt开发】Qt在QLabel(QWidget)鼠标绘制直线和矩形框
- Qt绘制坐标系
- Qt 绘制系统自带的最小化按钮和关闭按钮 及 解决中文乱码问题
- DrawTest for QT GUI Application(QT波形绘制实例)