HMI-37-【节能模式】中心仪表实现
节能模式下,做难做的就是中心仪表了,其他两个都很简单了。那么今天就把这个给实现了。
当前进度
当前进度如下,仅实现了发动机转速表的模拟。
[TOC]
关键字:
HIMI
、QPainter
、Qt
、drawPixmap
、eco
中心仪表之转速表
中心仪表结构还是大表套小表。今天主要搞大表,也就是转速表。今天的代码没有多少,但是呢,这个素材有点小问题,这个圆看似一个圆,实时却有点不圆,这可给我的UI增加了空难,困与自己PS能力有限,只能在现在的素材技术上稍作修改,在加上代码上的逻辑来稍微弥补一下。效果就如上图所示那样。最终代码是没有多少,折腾了一下午。好在目前的效果,我自己还能接受,凑合看吧。
void MDE_Center::drawPointer(int angle)
{
QPainter painter(ui->label_pointer);
painter.setRenderHint((QPainter::SmoothPixmapTransform));
painter.setRenderHint(QPainter::HighQualityAntialiasing);
painter.translate(338,337);
painter.save();
painter.rotate(angle);
/*
* 以下逻辑判断代码仅仅为解素材资源不是标准圆而写,这样判断其实还是比较暴力的,其实应该是计算一下在圆的弧度啥的,在写个算法来精准匹配,但是我做不到n_n.
*/
if(angle < 118)
{
painter.setOpacity(m_shadeOpacity);
painter.drawPixmap((-336),-337,675,654,QPixmap(":/Economic/Resources/MeterDisplay/Economic/MDEC/shadow.png"));
painter.setOpacity(1.0);
painter.drawPixmap((-336),-337,675,654,QPixmap(":/Economic/Resources/MeterDisplay/Economic/MDEC/pointer.png"));
}
else
{
painter.setOpacity(m_shadeOpacity);
painter.drawPixmap((-338),-339,675,654,QPixmap(":/Economic/Resources/MeterDisplay/Economic/MDEC/shadow.png"));
painter.setOpacity(1.0);
painter.drawPixmap((-338),-339,675,654,QPixmap(":/Economic/Resources/MeterDisplay/Economic/MDEC/pointer.png"));
}
painter.restore();
}
说明:
本项目中所使借鉴原型来自:[吉利] 博瑞GE | 仪表HMI设计、吉利汽车HMI项目。
设计图的所有权和解释权都归吉利汽车所有。
本项目所有资源文件均有打不死的小海复刻制作。
本项目代码暂时不会开源,有需要的源码的可与我联系,左上角二维码加微信。
本项目仅限学习交流、禁止商业使用。