Windows系统功能模拟 C++(EasyX插件)—— 6th 界面绘制(四)
来源:互联网 发布:以利天诚大数据 编辑:程序博客网 时间:2024/04/30 14:40
还是截图吧,截下来开始菜单,这是我现在未处理的样子:
这是我处理后的样子:
把除了最左边一列的快捷选项其他的全部填掉。
注意:因为是JPG图像,质量没有PNG号,所以很多图案都会变得十分粗糙,所以要手工处理,当然,如果你不是强迫症就不用处理了。
这里还需要截一个开始菜单点击时的状况,取名为“开始菜单2.jpg”。
好了,这是代码:
#pragma warning(disable: 4996)#include <windows.h> //系统相关#include <stdio.h>#include <graphics.h> //图形库#include <ctime>#include <iostream>#include <stdlib.h>#include <conio.h>#include <fstream> //文件读写#include <time.h> //随机数#include <iomanip> //输出格式#include <direct.h> //创建文件夹用 不推荐using namespace std; //使用后可以省略名字空间MOUSEMSG m; // 定义鼠标消息HANDLE hEvent;// 获取标准输入输出设备句柄 HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);HANDLE hIn = GetStdHandle(STD_INPUT_HANDLE);DWORD dwRes, dwState = 0;INPUT_RECORD keyRec;COORD crHome = { 0, 0 }, crPos;bool bCaps, bNum, bScroll;char ch;CONSOLE_SCREEN_BUFFER_INFO bInfo;int i, j;int 开始按钮状态 = 0;int 开始菜单状态 = 0;DWORD WINAPI DXC1(LPVOID lpParam){ IMAGE 壁纸; // 定义 IMAGE 对象 loadimage(&壁纸, "G:\\程序制作\\Windows系统模拟\\素材\\壁纸.jpg"); IMAGE 开始菜单; // 定义 IMAGE 对象 loadimage(&开始菜单, "G:\\程序制作\\Windows系统模拟\\素材\\开始菜单.jpg"); IMAGE 开始按钮0; // 定义 IMAGE 对象 loadimage(&开始按钮0, "G:\\程序制作\\Windows系统模拟\\素材\\开始按钮0.jpg"); IMAGE 开始按钮1; // 定义 IMAGE 对象 loadimage(&开始按钮1, "G:\\程序制作\\Windows系统模拟\\素材\\开始按钮1.jpg"); IMAGE 开始按钮2; // 定义 IMAGE 对象 loadimage(&开始按钮2, "G:\\程序制作\\Windows系统模拟\\素材\\开始按钮2.jpg"); Sleep(100); while (true) { // 获取一条鼠标消息 m = GetMouseMsg(); if (m.x > -1 && m.x < 61 && m.y>669 && m.y < 721) { for (i = 670; i < 720; i++) { setcolor(WHITE); line(0, i, 60, i); } putimage(0, 670, &开始按钮1, SRCAND); FlushBatchDraw(); } if (m.x > 60 || m.y < 670) { for (i = 670; i < 720; i++) { setcolor(WHITE); line(0, i, 60, i); } putimage(0, 670, &开始按钮0, SRCAND); FlushBatchDraw(); } if (开始菜单状态 == 1) { for (i = 181; i < 670; i++) { setcolor(WHITE); line(0, i, 926, i); } putimage(0, 181, &开始菜单, SRCAND); FlushBatchDraw(); } switch (m.uMsg) { case WM_LBUTTONDOWN: if (m.x > -1 && m.x < 61 && m.y>669 && m.y < 721) { 开始按钮状态 = 1; if(开始菜单状态==0) 开始菜单状态 = 1; else if (开始菜单状态 == 1) { 开始菜单状态 = 0; for (i = 181; i < 670; i++) { setcolor(WHITE); line(0, i, 926, i); } putimage(0, 0, &壁纸, SRCAND);//防止壁纸被覆盖后无法再出现 } for (i = 670; i < 720; i++) { setcolor(WHITE); line(0, i, 60, i); } putimage(0, 670, &开始按钮2, SRCAND);//点击开始按钮后改变图片为开始菜单2(点击时) FlushBatchDraw(); } } FlushBatchDraw(); }}DWORD WINAPI DXC2(LPVOID lpParam){ for (;;) { IMAGE 开始按钮1; // 定义 IMAGE 对象 loadimage(&开始按钮1, "G:\\程序制作\\Windows系统模拟\\素材\\开始按钮1.jpg"); if (开始按钮状态 == 1)//点击开始按钮后图片改变后返回 { Sleep(500); putimage(0, 670, &开始按钮1, SRCAND); FlushBatchDraw(); 开始按钮状态 = 0; } }}DWORD WINAPI DXC3(LPVOID lpParam){ for (;;) { }}void main(){ IMAGE 壁纸; // 定义 IMAGE 对象 loadimage(&壁纸, "G:\\程序制作\\Windows系统模拟\\素材\\壁纸.jpg"); IMAGE 开始按钮0; // 定义 IMAGE 对象 loadimage(&开始按钮0, "G:\\程序制作\\Windows系统模拟\\素材\\开始按钮0.jpg"); IMAGE 开始按钮1; // 定义 IMAGE 对象 loadimage(&开始按钮1, "G:\\程序制作\\Windows系统模拟\\素材\\开始按钮1.jpg"); HANDLE hThread1, hThread2, hThread3; SetEvent(hEvent); hThread1 = CreateThread(NULL, 0, DXC1, NULL, 0, NULL); hThread2 = CreateThread(NULL, 0, DXC2, NULL, 0, NULL); hThread3 = CreateThread(NULL, 0, DXC3, NULL, 0, NULL); initgraph(1280, 720); BeginBatchDraw(); for (i = 0; i < 720; i++) { setcolor(WHITE); line(0, i, 1280, i); } putimage(0, 0, &壁纸, SRCAND); putimage(0, 670, &开始按钮0, SRCAND); FlushBatchDraw(); for (;;);}
效果图(点击开始按钮后):
哈,也许7th会将这个开始菜单出现的动画完善一下哦~~~
1 0
- Windows系统功能模拟 C++(EasyX插件)—— 6th 界面绘制(四)
- Windows系统功能模拟 C++(EasyX插件)—— 4th 界面绘制(二)
- Windows系统功能模拟 C++(EasyX插件)—— 5th 界面绘制(三)
- Windows系统功能模拟 C++(EasyX插件)—— 3rd 界面绘制(一)
- Windows系统功能模拟 C++(EasyX插件)—— 7th 窗口(一)
- Windows系统功能模拟 C++(EasyX插件)—— 8th 窗口(二)
- Windows系统功能模拟 C++(EasyX插件)—— 1st 介绍
- Windows系统功能模拟 C++(EasyX插件)—— 2nd 基础设施
- Windows系统功能模拟 C++(EasyX插件(图形库))制作 开工!!!
- 晒几个界面(基于EasyX框架)
- 模拟模拟交易系统(五)——系统功能展示
- 做游戏,学编程(C语言) 7 学习EasyX图形交互功能----flappy bird源代码
- 扩展系统功能——装饰模式(四)
- 扩展系统功能——装饰模式(四)
- 扩展系统功能——装饰模式(四)
- C Primer Plus,5th Edition 复习(四)
- C语言+EasyX实现——鼠标坐标实时显示
- easyX图形函数库开发的俄罗斯方块游戏(C版本)
- Linux:password already has been used!
- 动态规划练习题-9(移动路线)
- about云之hadoop零基础
- 小白训练day2
- python导入模块的4种方法
- Windows系统功能模拟 C++(EasyX插件)—— 6th 界面绘制(四)
- Undefined class constant 'MYSQL_ATTR_INIT_COMMAND'错误解决方案
- 26:滑雪
- 算法训练 入学考试(背包问题)
- 【新手向】emacs配置文件
- 开发了针对 JS 类的数据注入工具
- R语言笔记--从矩阵的操作说起
- ServletContext 读取Web应用中的资源文件
- LeetCode447. Number of Boomerangs