太空人桌面源码

  • demo描述
  • 一. 先上图
  • 二. 源码
    • 2.1 主函数main.cpp
    • 2.2 时间函数date.cpp
    • 2.3 头文件date.h
  • 三. 源码和素材地址

demo描述

这是一款基于C写的小案例,是一个可以唱歌的时钟表盘.
因为表盘上的图标和数字和清除窗口的颜色重合了,出现镂空,毕竟美工太费时间了,我也不是专业的,所以P的有些拉胯,大家可以自己找素材,将我打包的素材替换即可,注意命名要一直,后缀要统一,同时也将它封装成了桌面应用.
源码和素材都打包好了,在下面.

一. 先上图

桌面上的太空人和uninstall分别是应用程序和卸载程序,安装程序放在了下面.

二. 源码

2.1 主函数main.cpp

/*
project:华为太空人手表表盘
author:多木
2023年2月26日14:10:47
Resource:www.duomu.xyz
*/
#include<graphics.h>
#include<stdio.h>
#include<mmsystem.h>
#include "date.h"
#pragma comment(lib,"winmm.lib")IMAGE imgs[71];
IMAGE szimg[11];
IMAGE szimg2[10];//显示秒void drawTime() {//获取时间,建议将其封装起来,这里我只封装了一个获取时分秒的int hour, minute, second;getTime(&hour,&minute,&second);//绘制时间int h1 = hour / 10;int h2 = hour % 10;putimage(-105, -70,&szimg[h1]);putimage(-70, -70, &szimg[h2]);//画时间的点putimage(-30, -60, &szimg[10]);putimage(-30, -35, &szimg[10]);//画分int m1 = minute / 10;int m2 = minute % 10;putimage(-10, -70, &szimg[m1]);putimage(30, -70, &szimg[m2]);//画秒putimage(70, -45, &szimg2[second / 10]);putimage(90, -45, &szimg2[second % 10]);}
int main() {//1.创建表盘窗口//1.1创建一个和桌面一样大小的窗口//1.2把整个窗口设置为顶层,透明initgraph(GetSystemMetrics(SM_CXSCREEN),//动态获取桌面宽度GetSystemMetrics(SM_CYSCREEN)//桌面高度);//去除窗口标题栏//找到指定窗口标题栏HWND hwnd =  GetHWnd();//获取当前窗口的窗口句柄SetWindowLong(hwnd, //设置窗口属性GWL_STYLE,//设置窗口风格GetWindowLong(hwnd, GWL_STYLE) - WS_CAPTION);//窗口顶层,同时设置位置和大小SetWindowPos(hwnd,//设置的目标窗口HWND_TOPMOST,//顶层窗口0, 0, //窗口左上角的坐标GetSystemMetrics(SM_CXSCREEN),//动态获取桌面宽度GetSystemMetrics(SM_CYSCREEN),//桌面高度SWP_SHOWWINDOW);//窗口透明//1. 要求窗口设置为"分层窗口"//2. 再把分层窗口设置为透明SetWindowLong(hwnd,GWL_EXSTYLE,//窗口的拓展样式GetWindowLong(hwnd, GWL_EXSTYLE) | WS_EX_LAYERED);//设置分层窗口透明度SetLayeredWindowAttributes(hwnd,//RGB(183, 186, 191),//指定需要变成透明的背景色(灰色)RGB(0, 0, 0),//指定需要变成透明的背景色(灰色)0,//透明度 0:全透明 255:完全透明LWA_COLORKEY//透明方式:把窗口所有参数2的颜色变成透明);// 清理窗口//setbkcolor(RGB(183, 186, 191 ));//设置背景填充色setbkcolor(RGB(0, 0, 0));//设置背景填充色cleardevice();//使用背景颜色清理窗口//设置坐标原点setorigin(GetSystemMetrics(SM_CXSCREEN) - 150, 150);//绘制表盘IMAGE bg;loadimage(&bg,"ring.png",300, 300,//表盘尺寸true//等比缩放);//看54行代码知道坐标中心位置putimage(-150, -150, &bg);//显示表盘//画一个rgb(183,186,191)圈,去除毛刺setlinecolor(RGB(0, 0, 0));//画笔颜色setlinestyle(PS_SOLID, 8);//画笔颜色 实线,数字越大,线条越粗circle(0, 0, 152);//尽量不要超过(300/2 + 8/2)//音乐播放mciSendString("play bg.mp3 repeat", 0, 0, 0);//画太空人//预加载太空人图片帧char imgName[64];for (int i = 0; i < 71; i++) {// 文件名 图层 70sprintf_s(imgName, sizeof(imgName), "图层 %d.png", 71 - i);loadimage(&imgs[i], imgName, 75, 75, true);} //预加载数字图片for (int i = 0; i < 10; i++){sprintf_s(imgName, sizeof(imgName), "%d.png", i);loadimage(&szimg[i], imgName, 30, 60, true);loadimage(&szimg2[i], imgName, 15, 30, true);}loadimage(&szimg[10], "rect.jpg", 10, 10,true);//死循环,使图片一直渲染int k = 0;while (1){putimage(-40, -15, &imgs[k]);k = (k + 1) % 71; //取余数,使图片从0...70 ... 0 .... 70 Sleep(30);drawTime();}system("pause");return 0;
}

2.2 时间函数date.cpp

#include "date.h"
#include<time.h>
#include<stdio.h>//获取日期void getDate(int* year, int* mouth, int* day, char* longliStr)
{}
//获取周
void getWeek(int y, int m, int d, char* str)
{}
//获取时间
void getTime(int* hour, int* minute, int* second)
{time_t t = time(NULL);struct tm* local = localtime(&t);*hour = local->tm_hour;*minute = local->tm_min;*second = local->tm_sec;
}

2.3 头文件date.h

#pragma once
void getDate(int* year, int* mouth, int* day, char* longliStr);
void getWeek(int y, int m, int d, char* str);
void getTime(int* hour, int* minute, int* second);

三. 源码和素材地址

下载地址
PS:代码有点拉胯,美工也拉了,但是能跑,大家如果有好的素材,可以将里面的素材替换即可

window桌面版太空人相关推荐

  1. 桌面版应用_桌面版应用程序的前世今生

    ​互联网出现之前,C/S架构是软件产品的主流,后面渐渐地被B/S架构所取代(因为不需要配置客户端),但由于浏览器有刷新机制,服务器的负载等因素,C/S架构的响应速度和流畅性是好于B/S架构的,所以现在 ...

  2. android firefox x86,Firefox 26桌面版加强安全 移动版支持x86

    [天极软件频道消息]12月10日,Mozilla在全球同步发布了Window, Linux, Mac和Android平台上的Firefox浏览器更新.其中桌面版本主要提升了安全性能,而Android平 ...

  3. mac pro M1(ARM)安装:ubuntu桌面版虚拟机(五)

    0. 引言 之前写了在mac m1中安装ubuntu虚拟机,但因为一直有同学问ubuntu桌面版如何安装,尽管个人不太推荐linux系统安装桌面版,但是应大家的需求,还是单独出一期ubuntu桌面版安 ...

  4. 红旗linux桌面版反应慢,红旗Linux6.0桌面版使用感受

    1.红旗Linux6.0桌面版中文支持比较好,毕竟是国人出的发行版:输入法很不错:自动挂载win分区(好像Ubuntu.OpenSUSE.Fedora等这些流行发行版的新版都支持了),自动安装网络,用 ...

  5. EasyDL桌面版发布!3天体验学习

    Datawhale干货 EasyDL:一键安装,本地高效建模 智能时代来临,企业利用人工智能进行智能化升级势在必行.但由于业务性质等客观因素,不少企业在应用AI时,受场景网络环境.本地算力限制等,迫切 ...

  6. linux内核支持硬盘,Intel 10nm桌面版还是来了:Linux内核已支持

    Intel 10nm工艺处理器目前仅用于笔记本移动平台,而且只有U系列低功耗版.Y系列超低功耗版,甚至在此领域仍需要14nm产品来作为补充,再加上Ice Lake处理器频率偏低,初代10nm Cann ...

  7. 我为什么最终放弃了 Linux 桌面版的研发

    [编者按]Linux作为一个开源工程,没有太多的商业化行为,就决定了它的UI设计.用户体验等等都没办法和Windows比.只有好的代码并不能构成一个好的软件. 作者 | Awilfox      译者 ...

  8. oracle 11g安装桌面,Lubuntu 12.10 桌面版安装Oracle 11g

    在网上找到在 LUbuntu 12.10 桌面版上成功安装 Oracle11g 的相关资料.记录之. 1. 安装依赖项 sudo apt-get install gcc make binutils l ...

  9. Ubuntu桌面版与服务器版的区别

    Ubuntu桌面版vs服务器版 提到安装Linux,Ubuntu可谓是最受欢迎的.为了满足每个人的需求,出现了不少版本或风格的Ubuntu:其中两项便是桌面版与服务器版.只要发布版本号一致,这两者从核 ...

最新文章

  1. pyhanlp 中文词性标注与分词简介
  2. XHTML重构(一)
  3. jdk 8 时区 转换_JDK 8 BigInteger精确缩小转换方法
  4. 前9个免费的Java流程监视工具以及如何选择一种
  5. 【渝粤教育】国家开放大学2019年春季 1398分析化学(本) 参考试题
  6. 编译原理语法分析_斯坦福大学《编译原理》学习记录 - 第二章:语法分析器
  7. 给网站logo添加css帅气亮光扫过特效 附教程
  8. RabbitMQ消息队列,看这篇文章就够了
  9. android 微信自带表情,Android 软键盘和emoji表情切换方案,和微信几乎一样的体验...
  10. Android SystemServer 进程
  11. Python open和with open的区别
  12. 熟识 : 计算机文化(收藏)
  13. 如何查看电脑里的隐藏文件?
  14. 西瓜书.第五章(神经网络)重点最全整理+课后习题
  15. 软件测试笔记_09_自动化相关概念【重要】
  16. Linux nohup的作用
  17. 移动硬盘连接电脑提示格式化解决方法
  18. 53 张图详解防火墙的 55 个知识点
  19. word的表格解决左对齐但不在左边,对齐不正常
  20. 46.整理华子面经+笔试+排序算法

热门文章

  1. Android开发——创建新的activity
  2. 密信(MeSince)的诞生,全自动加密信息已来临!
  3. 简历中没写中间件,面试5分钟就被请出去了,ElasticSearch 改咋学呢?
  4. 朗读者 (一) 节选
  5. anyRTC聊聊【子弹短信】的音视频通讯
  6. Android:代码撸彩妆 2(大眼,瘦脸,大长腿)
  7. 我承受不住那么多的爱
  8. python自动选课原理_我用 Python 和 Twilio 实现自动化选课
  9. jmeter学习记录(3)jmeter中如何引用变量?
  10. 钥道不止,目录在线:瞎找不如阅目录