【C++】开源:Windows图形库EasyX配置与使用

😏*★,°* :.☆( ̄▽ ̄)/$:.°★ 😏

这篇文章主要介绍Windows图形库EasyX配置与使用。
无专精则不能成,无涉猎则不能通。------梁启超

欢迎来到我的博客,一起学习,共同进步。

喜欢的朋友可以关注一下,下次更新不迷路🥞

文章目录

    • [:smirk:1. 项目介绍](#:smirk:1. 项目介绍)
    • [:blush:2. 环境配置](#:blush:2. 环境配置)
    • [:satisfied:3. 使用说明](#:satisfied:3. 使用说明)

😏1. 项目介绍

官网:https://easyx.cn/

EasyX是一个基于Windows的简单图形库,它提供了一个易于使用的图形绘制接口,适用于初学者和爱好者进行图形编程。下面是EasyX库的一些特点和功能:

1.易于学习和使用:EasyX采用了简单的图形绘制接口,使得初学者可以快速上手。它提供了一些基本的绘图函数,如画线、画圆、绘制文本等,使用户能够轻松创建图形界面和动画效果。
2.轻量级和快速:EasyX是一个轻量级的图形库,不需要复杂的安装和配置过程。它使用GDI(图形设备接口)来进行图形绘制,具有较快的绘图速度和相对较低的系统资源占用。
3.图形界面设计:EasyX提供了一些常用的图形界面控件,如按钮、文本框、滚动条等,使用户可以轻松创建交互式的图形界面。
4.动画和游戏开发:EasyX支持实时动画和游戏开发,提供了帧动画、双缓冲技术等功能,使用户能够创建流畅的动画效果和简单的游戏。
5.跨平台:EasyX主要针对Windows平台,支持Windows XP及以上版本。然而,EasyX也可以在部分Linux环境下使用,如Wine模拟器。

😊2. 环境配置

我这里用的Clion + mingw,EasyX的下载地址:https://easyx.cn/download/easyx4mingw_20220901.zip

CMakeLists.txt示例:

bash 复制代码
cmake_minimum_required(VERSION 3.19)
project(easyx_demo)

set(CMAKE_CXX_STANDARD 14)

include_directories("D:/develop/easyx4mingw_20220901/include")
link_directories("D:/develop/easyx4mingw_20220901/lib64")

add_executable(easyx_demo main.cpp)
target_link_libraries(easyx_demo -leasyx)

😆3. 使用说明

绘制圆的示例:

cpp 复制代码
#include <graphics.h>
#include <conio.h>

int main()
{
    initgraph(640, 480);  // 创建一个640x480的绘图窗口

    circle(320, 240, 100);  // 在窗口中心画一个半径为100的圆

    getch();  // 等待用户按下任意键

    closegraph();  // 关闭绘图窗口
    return 0;
}

获取鼠标和键盘事件示例:

cpp 复制代码
#include <graphics.h>
#include <conio.h>
#include <stdio.h>

int main()
{
    initgraph(640, 480);  // 创建一个640x480的绘图窗口

    while (true)
    {
        // 监听键盘事件
        if (kbhit())
        {
            char ch = getch();  // 获取键盘按键
            if (ch == 'q' || ch == 'Q')
                break;  // 如果按下了Q键,退出循环
        }

        // 监听鼠标事件
        if (MouseHit())
        {
            MOUSEMSG mouseMsg = GetMouseMsg();

            if (mouseMsg.uMsg == WM_MOUSEMOVE)
            {
                int x = mouseMsg.x;
                int y = mouseMsg.y;
                // 在控制台输出鼠标移动的坐标
                printf("Mouse move: x = %d, y = %d\n", x, y);
            }
            else if (mouseMsg.uMsg == WM_LBUTTONDOWN)
            {
                int x = mouseMsg.x;
                int y = mouseMsg.y;
                // 在控制台输出鼠标左键按下的坐标
                printf("Left button down: x = %d, y = %d\n", x, y);
            }
            else if (mouseMsg.uMsg == WM_LBUTTONUP)
            {
                int x = mouseMsg.x;
                int y = mouseMsg.y;
                // 在控制台输出鼠标左键释放的坐标
                printf("Left button up: x = %d, y = %d\n", x, y);
            }
        }
    }

    closegraph();  // 关闭绘图窗口
    return 0;
}

以上。

相关推荐
寂柒2 分钟前
C++——堆
开发语言·c++
梦梦代码精3 分钟前
智能体编排 + MCP + 知识库,开源可商用!
人工智能·神经网络·gitee·开源·github·代码规范
郝学胜-神的一滴7 分钟前
解锁CS数据存储的核心逻辑:从结构选择到表单设计的全解析
linux·服务器·数据库·c++·后端·oracle
人间打气筒(Ada)12 分钟前
「码动四季·开源同行」go语言:如何追踪分布式系统调用链路的问题?
开发语言·golang·开源·分布式链路追踪
getapi12 分钟前
Windows 11 安装 uv包括:更新、常用命令、Python 管理、环境切换等,(Astral 的 Python 包/环境工具)完整指南
windows·python·uv
起个名字总是说已存在16 分钟前
github开源AI技能:UI UX Pro Max智能设计系统生成器
人工智能·ui·开源·github
Q741_14724 分钟前
每日一题 力扣 3418. 机器人可以获得的最大金币数 力扣 215. 数组中的第K个最大元素 动态规划 TopK问题 C++ 题解
c++·算法·leetcode·动态规划·topk
haibindev25 分钟前
写了10年代码的人,在AI编程时代反而最值钱
c++·ai编程·claude
后端小肥肠29 分钟前
写公众号没灵感?这个 50K Star 开源工具把热点主动推到我面前
人工智能·开源·资讯
寻寻觅觅☆34 分钟前
东华OJ-基础题-31-素数(C++)
开发语言·c++·算法