目录

EasyX 学习笔记

学习站点

基础操作

捕获按键

while(c != 27) {    // ESC为27
    if (_kbhit())   // 有输入
        c = _getch();   // 读取
    else c = '.';
    printf("%c", c);
    Sleep(100);
}
while(c != 27) {    // ESC为27
    c = _getch();   // 获取按键
    // 先擦掉上次显示的旧图形
    setlinecolor(BLACK);
    setfillcolor(BLACK);
    fillcircle(x, 240, 20);
    switch(c) { // 根据输入,计算新的坐标
        case 'a': x-=2; break;
        case 'd': x+=2; break;
        case 27: break;
    }
    // 绘制新的图形
    setlinecolor(YELLOW);
    setfillcolor(GREEN);
    fillcircle(x, 240, 20);
    Sleep(10);  // 延时
}

随机函数 / 系统时间 / 输出文字

SYSTEM ti;
GetLocalTime(ti);
cout << ti.wHour << ti.wMinute << ti.wSecond << ti.wMilliseconds << endl;
cout << ti.wYear << ti.wMonth << ti.wDayOfWeek << ti.Day << endl;

绘图中的位运算

鼠标操作

struct MOUSEMSG {
    UINT uMsg;      // 当前鼠标消息
    bool mkCtrl;    // Ctrl 键是否按下
    bool mkShift;   // Shift 键是否按下
    bool mkLButton; // 鼠标左键是否按下
    bool mkMButton; // 鼠标中键是否按下
    bool mkRButton; // 鼠标右键是否按下
    int x;          // 当前鼠标 x 坐标
    int y;          // 当前鼠标 y 坐标
    int wheel;      // 鼠标滚轮滚动值
    // 当前鼠标消息uMsg 可取值:
    // WM_MOUSEMOVE     鼠标移动消息
    // WM_MOUSEWHEEL    鼠标滚轮拨动消息
    // WM_LBUTTONDOWN   左键按下消息
    // WM_LBUTTONUP     左键弹起消息
    // WM_LBUTTONDBLCLK 左键双击消息
    // WM_MBUTTONDOWN   中键按下消息
    // WM_MBUTTONUP     中键弹起消息
    // WM_MBUTTONDBLCLK 中键双击消息
    // WM_RBUTTONDOWN   右键按下消息
    // WM_RBUTTONUP     右键弹起消息
    // WM_RBUTTONDBLCLK 右键双击消息
};
int main() {
    MOUSEMSG m;
    while (true) {
        // 通过循环的方式不断获得鼠标的状态
        m = GetMouseMsg();
        // 后对本循环中读取到的信息进行操作
        switch (m.uMsg) {
            case WM_MOUSEMOVE:
                break;
            case WM_LBUTTONDOWN:
                break;
            case WM_RBUTTONUP:
                return 0;   // 退出程序
        }
    }
    if (MouseHit()) m = GetMouseMsg();
    // 以上为了确定是否有鼠标 / 进行链接
    if (m.uMsg == WM_LBUTTONDOWN);
    // 判断鼠标左键是否按下
}

数组

关于 image 的操作

IMAGE img;  // 定义 IMAGE 对象
loadimage(&img, _T("D:\\test.jpg"));    // 读取图片到 img 对象中
putimage(0, 0, &img);   // 在坐标 (0, 0) 位置显示 IMAGE 对象, 左上角对其此坐标

窗体句柄

搭配Windows GDI使用

#include <graphics.h>
#include <conio.h>

int main()
{
    // 初始化绘图窗口,并获取 HDC 句柄
    initgraph(640, 480);
    HDC hdc = GetImageHDC();

    // 以下是标准 Windows GDI 操作画一条线(相关语句,请查阅 MSDN)
    MoveToEx(hdc, 100, 100, NULL);
    LineTo(hdc, 200, 200);
    // 标准 Windows GDI 操作结束

    // 创建 300x300 的 IMAGE 对象,并获取其 HDC 句柄
    IMAGE img(300, 300);
    HDC hdc = GetImageHDC(&img);

    // 以下是标准 Windows GDI 操作画一条线(相关语句,请查阅 MSDN)
    MoveToEx(hdc, 100, 100, NULL);
    LineTo(hdc, 200, 200);
    // 标准 Windows GDI 操作结束

    // 将 img 贴到绘图窗口上:
    putimage(0, 0, &img);

    // 按任意键返回
    _getch();
    closegraph();
    return 0;
}