摘要:我来告诉你他到底有什么秘密,风儿风儿吹风儿风儿吹吹!听说最近太空人智能表盘很火啊,那么如何用C++做一个好玩的智能太空人表盘呢?安排!

软件工具:Vsiual studio 201x

1、安装Vsiual studio

首先在官网下载安装Vsiual studio

https://visualstudio.microsoft.com/zh-hans/

下载完成后傻瓜式安装即可,如果你电脑上已经安装过Vsiual studio软件了这一步就可以忽略了。

2、安装EasyX图形库

由于太空人表盘界面需要用到很多画线画图函数,这里我们需要安装EasyX图形库。graphics.h是TC的针对DOS下的一个C语言图形库,如果要用的话应该用TC的编译器来编译,VC++环境有其它的针对Windows的图形库。分为:像素函数、直线和线型函数、多边形函数、填充函数等。如果有需要在VC及VS环境中使用graphics.h的功能,可以下载EasyX图形库,这是一个C++的图形库,如果一定要在C语言环境下使用graphics.h,可以使用Windows GDI。

下载方法

在网址:https://easyx.cn/downloads/ 下载graphics.h头文件安装包。安装包的图标如下图

安装包下载完成后按照安装向导安装,软件会自动检测你电脑上安装的Vsiual studio版本,因为我用的是2017版本,直接点击安装即可,这样EasyX图形库就安装到你的电脑中了。注意:如果不安装这个,接下来新建工程会报错没有graphics.h这个头文件。

3、新建工程

在所有环境都安装成功之后,就可以来新建一个工程了。打开Vsiual studio 2017软件,按照下图的配置新建一个空的新工程。

在工程的源文件和头文件中添加新建项,也就是工程所需的.h文件和.c文件。这两个文件我会放到文末!

这样工程就新建完毕了!

4、编写代码

由于windows生成的窗口是方形的,而智能表盘的形状是圆的,所以第一步就要修改窗口的样式

4.1初始化界面为圆形

void SetWindowNewStyle(int w, int h)
{// 去掉标题SetWindowLong(GetHWnd(), GWL_STYLE, GetWindowLong(GetHWnd(), GWL_STYLE) & ~WS_CAPTION);// 初始化界面为圆形SetWindowRgn(GetHWnd(), CreateEllipticRgn(0, 0, w, h), true);
}

4.2 加载图片

太空表盘的转动动图是由一张一张的图片循环播放的效果,所以使用LoadImage函数,可以装载图标,光标,或位图,支持bmp,jpg,gif,emf,wmf,ico格式。

void loadImg()
{mciSendString("open ./images/风儿吹.mp3", NULL, 0, NULL);mciSendString("play ./images/风儿吹.mp3 repeat", NULL, 0, NULL);char fileName[50] = { 0 };for (int i = 0; i < 30; i++){sprintf_s(fileName, "./images/guoguoxiaoshidi (%d).jpeg", i + 1);loadimage(spaceMan + i, fileName, 140, 130);}loadimage(&other[0], "./images/xinlv.jpg", 60, 60);//心率loadimage(&other[1], "./images/sun.jpg", 40, 40);//太阳loadimage(&other[2], "./images/shoes.jpg", 40, 40);//鞋子loadimage(&other[3], "./images/shang.jpg", 30, 30);//上箭头loadimage(&other[4], "./images/xia.jpg", 30, 30);//下箭头loadimage(&other[5], "./images/rocket.jpg", 40, 40);//火箭
}

4.3 绘制汉字与直线

这里要注意的是高版的VS默认不让使用scanf,fopen等函数,如果使用会报scanf,fopen等函数不安全。而代替其函数的是scanf_s,fopen_s等函数,后边有个"_s"的形式。想要使用可右击工程 - 属性 - 配置属性 - C/C++ - 预处理器。增加下面两行,命令即可!

_CRT_SECURE_NO_DEPRECATE
_CRT_SECURE_NO_WARNINGS

下面就是具体的画图画线函数

void gameDraw()
{setbkcolor(RGB(255, 0, 0));cleardevice();//绘制表盘setlinecolor(RGB(0, 0, 0));//设置边框颜色setlinestyle(PS_SOLID, 30);setfillcolor(RGB(255, 255, 255));//设置圆的填充白色fillellipse(0, 0, WIN_SIZE, WIN_SIZE);//绘制一个圆  //绘制线条setlinestyle(PS_SOLID, 4);setlinecolor(BLACK);//最上面竖线line(WIN_HALF - 30, 20, WIN_HALF - 30, 130);//横线x2line(WIN_HALF - 195, WIN_HALF - 120, WIN_HALF + 195, WIN_HALF - 120);line(WIN_HALF - 195, WIN_HALF + 120, WIN_HALF + 195, WIN_HALF + 120);//下面线条x3line(WIN_HALF + 80, WIN_HALF + 120, WIN_HALF + 80, WIN_HALF + 175);line(WIN_HALF + 80, WIN_HALF + 175, WIN_HALF - 60, WIN_HALF + 175);line(WIN_HALF - 60, WIN_HALF + 175, WIN_HALF - 60, WIN_HALF + 175 + 48);setbkmode(TRANSPARENT);//左上空气湿度90%setTextStyle(55, 23, "Arial");settextcolor(BLACK);outtextxy(WIN_HALF - 155, 75, "90%");drawImg(other + 5, WIN_HALF - 90, 35); //火箭putimage(WIN_HALF - 90, 35, other + 5);setTextStyle(25, 15, "黑体");outtextxy(WIN_HALF - 25, 35, "空气良好");setTextStyle(25, 13, "宋体");outtextxy(WIN_HALF - 25, 65, "晴天");outtextxy(WIN_HALF - 25, 95, "25℃");outtextxy(WIN_HALF + 38, 65, "26°");outtextxy(WIN_HALF + 38, 95, "17°");drawImg(other + 4, WIN_HALF + 73, 60);  drawImg(other + 3, WIN_HALF + 73, 90);    drawImg(other + 1, WIN_HALF + 105, 70);   putimage(WIN_HALF + 73, 60, other + 4);putimage(WIN_HALF + 73, 90, other + 3);putimage(WIN_HALF + 105, 70, other + 1);setTextStyle(37, 17, "宋体");outtextxy(100, WIN_HALF + 130, "睡眠");outtextxy(WIN_HALF + 90, WIN_HALF + 130, "距离");outtextxy(50, WIN_HALF-40, "武汉");setTextStyle(40, 15, "Arial");outtextxy(185, WIN_HALF + 125, "7h30m");outtextxy(215, WIN_HALF + 180, "9.88km");//心率setTextStyle(25, 13, "宋体");outtextxy(60, WIN_HALF + 30, "80~128");drawImg(&other[0], 65, WIN_HALF + 50);    //心率图putimage(65, WIN_HALF + 50, other + 0);setTextStyle(40, 15, "Arial");outtextxy(135, WIN_HALF + 60, "92");   // 步数drawImg(&other[2], WIN_HALF + 65, WIN_HALF + 65);putimage(WIN_HALF + 65, WIN_HALF + 65, &other[2]);outtextxy(WIN_HALF + 125, WIN_HALF + 75, "9527");//时间、日期相关time_t timep = time(NULL);           //获取当前时间struct tm* p = localtime(&timep);  //把时间转成格式化时间setTextStyle(25, 12, "宋体");outtextxy(WIN_HALF + 110, WIN_HALF - 20, "四月六号");char fileName[40] = { 0 };sprintf_s(fileName, "周%s %d-%d", week[p->tm_wday], p->tm_mon + 1, p->tm_mday);outtextxy(WIN_HALF + 110, WIN_HALF + 10, fileName);// 获取字体setTextStyle(100, 40, "Arial");char szBuf[40] = { 0 };sprintf_s(szBuf, "%d:%02d", p->tm_hour, p->tm_min);outtextxy(105, 120, szBuf);// 秒setTextStyle(55, 23, "Arial");sprintf(szBuf, "%02d", p->tm_sec);outtextxy(335, 160, szBuf);
}

4.4 main函数

int main()
{initgraph(WIN_SIZE, WIN_SIZE/*,EW_SHOWCONSOLE*/);SetWindowNewStyle(WIN_SIZE, WIN_SIZE);loadImg();BeginBatchDraw();//双缓冲 防止闪屏while (true){gameDraw();animation();mouseEvent();FlushBatchDraw();}EndBatchDraw();return 0;
}

5、效果展示

在显示动画的同时电脑也会播放音乐哟!小伙伴赶紧下载工程玩玩去吧!

华为太空人智能表盘代码仅需100行?相关推荐

  1. PywebIO 轻松制作一个数据大屏,代码只需100行

    今天我给大家分享一个制作数据大屏的工具,非常的好用,100行的Python代码就可以制作出来一个完整的数据大屏,并且代码的逻辑非常容易理解. PywebIO介绍 Python当中的PywebIO模块可 ...

  2. 网传梅姨照片竟然是电脑合成的!仅需 100 行代码,你也能做到!

    近日,有关人贩子"梅姨"的图片在朋友圈以及网络平台热传,所有人都以为这是一张官方发布的照片,于是纷纷在朋友圈转发. 但是当天下午,公安部儿童失踪信息紧急发布平台曾发布消息称,&qu ...

  3. dataframe两个表合并_史上代码最少的工作表拆分,仅需5行,不可思议

    工作中,很多小伙伴都会遇到一些需求,将一份Excel文档按照部门进行拆分,每个部门是一个单独的工作表,或者每个部门整理的工作表汇总为一份总的工作表.读者需要注意的是,多个工作表的拆分与合并,始终在一个 ...

  4. OpenCV-Python实战(14)——人脸检测详解(仅需6行代码学会4种人脸检测方法)

    OpenCV-Python实战(14)--人脸检测详解(仅需6行代码学会4种人脸检测方法) 0. 前言 1. 人脸处理简介 2. 安装人脸处理相关库 2.1 安装 dlib 2.2 安装 face_r ...

  5. github怎么为代码着色_如何仅用100行神经网络代码为黑白照片着色

    github怎么为代码着色 by Emil Wallner 埃米尔·沃尔纳(Emil Wallner) 如何仅用100行神经网络代码为黑白照片着色 (How to colorize black &am ...

  6. python爬虫代码1000行-最精简的爬虫 --仅需4行代码(python)

    最精简的爬虫 --仅需4行代码(python) 刚刚整理了下爬虫系列,于是乎就开始了第一次的技术分享 今天,我们主要讲述的是思路,思路,思路. 相比起,直接贴代码,思路显的更为重要 当初,自己的坑,希 ...

  7. python加密敏感信息_仅需10行代码,使用python加密用户敏感数据

    原标题:仅需10行代码,使用python加密用户敏感数据 数据分析师必须要遵守的一个规则就是数据保密,但在跨部门沟通的时候,难免会有数据泄露的情况,所以,对于用户的姓名.手机号.地址等敏感信息,一般需 ...

  8. 最简单的爬虫代码 python_最精简的爬虫 --仅需4行代码(python)

    最精简的爬虫 --仅需4行代码(python) 刚刚整理了下爬虫系列,于是乎就开始了第一次的技术分享 今天,我们主要讲述的是思路,思路,思路. 相比起,直接贴代码,思路显的更为重要 当初,自己的坑,希 ...

  9. python简单爬虫代码-最精简的爬虫 --仅需4行代码(python)

    最精简的爬虫 --仅需4行代码(python) 刚刚整理了下爬虫系列,于是乎就开始了第一次的技术分享 今天,我们主要讲述的是思路,思路,思路. 相比起,直接贴代码,思路显的更为重要 当初,自己的坑,希 ...

最新文章

  1. vPower系列- 前言
  2. 一篇讲清:数据采集中的安全与隐私
  3. 为什么我喜欢EJB 3.0并且尤其喜欢EJB 3.1
  4. 多图 | 操作系统中,进程与线程怎么设计的?
  5. js html 导出word 不用activexobject,javascript下用ActiveXObject控件替换word书签,将内容导出到word后打印第2/2页...
  6. 前端学习(1942)vue之电商管理系统电商系统之创建商品分类的分支
  7. 【CodeForces - 558C】Amr and Chemistry(位运算,bfs,计数,思维,tricks)
  8. 微软Connect教程系列--自动生成增删改查页面工具介绍(二)
  9. 进程通信:匿名管道和命名管道
  10. win7下使用Taste实现协同过滤算法
  11. Execution failed for task ':app:mergeDebugResources
  12. django模型sqlserver_SQLServer数据库入门之django如何连接SQLServer
  13. 马化腾回应《腾讯没有梦想》:我的理想不是赚多少钱
  14. yarn logs -applicationId 无法导出logs日志 Log aggregation has not completed or is not enabled.
  15. 基于深度学习的关系抽取
  16. UReport2初体验
  17. 12306android端接口,12306官方火车票Api接口
  18. Bad client credentials
  19. 浅谈PHP如何实现网站文章或博客浏览量页面访问量+1
  20. krpano 场景切换 通知_krpano 场景转换模式

热门文章

  1. 从 HTTP 瞎逼逼到 HTTP/2
  2. html图片滚动首尾互联,网页中多个图片首尾相接来回滚动
  3. 【3D打印机】原来配置Marlin2.0这么简单,别说我没告诉你。
  4. Buct oj 1018
  5. 自建游戏加速器教程(国内玩家联机)
  6. BAT的数据红利,催生AI时代的敏捷计算力
  7. 电子信息工程考研:12大专业方向解读
  8. 微信开发者工具和gitee实现多人协作
  9. Error mounting /dev/sda8 at /media/wxp/
  10. iperf的ios版本;无线局域网测速