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
原创粉丝点击