EasyX 概述
-
EasyX 是一款专为 C++ 开发者设计的轻量级图形库,主要面向 Windows 平台,它有如下特点
-
EasyX 的 API 设计简洁直观,易学易用,绘图效果所见即所得
一、打开与关闭窗口
1、基本介绍
HWND initgraph(int width, int height, int flag = 0);
#define EX_SHOWCONSOLE 1
#define EX_NOCLOSE 2
#define EX_NOMINIMIZE 4
#define EX_DBLCLKS 8
- initgraph 函数用于打开窗口,返回窗口的句柄
参数 | 说明 |
---|
width | 窗口的宽度 |
height | 窗口的高度 |
flag | 窗口的样式
EX_SHOWCONSOLE :打开窗口的同时,显示控制台窗口
EX_NOCLOSE :禁用窗口的关闭按钮
EX_NOMINIMIZE :禁用窗口的最小化按钮
EX_DBLCLKS :在窗口中支持鼠标双击事件 |
void closegraph();
- closegraph 用于关闭窗口
2、演示
- 打开一个窗口
#include <graphics.h>
#include <conio.h>
int main() {
initgraph(640, 480);
_getch();
closegraph();
return 0;
}
- 打开一个窗口,同时,显示控制台窗口
#include <graphics.h>
#include <conio.h>
int main() {
initgraph(640, 480, EX_SHOWCONSOLE);
_getch();
closegraph();
return 0;
}
- 打开一个窗口,同时,禁用窗口的关闭按钮与最小化按钮
#include <graphics.h>
#include <conio.h>
int main() {
initgraph(640, 480, EX_NOCLOSE | EX_NOMINIMIZE);
_getch();
closegraph();
return 0;
}
二、窗口属性设置
1、设置窗口的背景颜色
(1)基本介绍
void setbkcolor(COLORREF color);
- 可以使用 RGB 宏设置窗口的背景颜色
#define RGB(r,g,b) ((COLORREF)(((BYTE)(r)|((WORD)((BYTE)(g))<<8))|(((DWORD)(BYTE)(b))<<16)))
- 也可以使用 EasyX 预定义的颜色常量,例如,BLACK、WHITE 等
#define BLACK 0
#define BLUE 0xAA0000
#define GREEN 0x00AA00
#define CYAN 0xAAAA00
#define RED 0x0000AA
#define MAGENTA 0xAA00AA
#define BROWN 0x0055AA
#define LIGHTGRAY 0xAAAAAA
#define DARKGRAY 0x555555
#define LIGHTBLUE 0xFF5555
#define LIGHTGREEN 0x55FF55
#define LIGHTCYAN 0xFFFF55
#define LIGHTRED 0x5555FF
#define LIGHTMAGENTA 0xFF55FF
#define YELLOW 0x55FFFF
#define WHITE 0xFFFFFF
- 设置窗口的背景颜色后,需要执行 cleardevice 函数,才能使设置生效
void cleardevice();
(2)演示
- 使用 RGB 宏设置窗口的背景颜色
#include <graphics.h>
#include <conio.h>
int main() {
initgraph(640, 480);
setbkcolor(RGB(0, 255, 0));
cleardevice();
_getch();
closegraph();
return 0;
}
- 使用 EasyX 预定义的颜色常量
#include <graphics.h>
#include <conio.h>
int main() {
initgraph(640, 480);
setbkcolor(WHITE);
cleardevice();
_getch();
closegraph();
return 0;
}
2、设置窗口的大小与位置
(1)演示
#include <graphics.h>
#include <conio.h>
int main() {
initgraph(640, 480);
Sleep(3000);
HWND hwnd = GetHWnd();
MoveWindow(hwnd, 100, 100, 800, 600, TRUE);
_getch();
closegraph();
return 0;
}
(2)案例解读
- GetHWnd 函数用于获取窗口句柄
HWND GetHWnd();
- MoveWindow 函数用于设置窗口的大小与位置,它是 Windows API
WINUSERAPI
BOOL
WINAPI
MoveWindow(
_In_ HWND hWnd,
_In_ int X,
_In_ int Y,
_In_ int nWidth,
_In_ int nHeight,
_In_ BOOL bRepaint);
参数 | 说明 |
---|
hWnd | 窗口句柄 |
X | 新 X 坐标 |
Y | 新 Y 坐标 |
nWidth | 新宽度 |
nHeight | 新高度 |
bRepaint | 是否重绘窗口 |
3、设置窗口的标题
(1)演示
#include <graphics.h>
#include <conio.h>
int main() {
initgraph(640, 480);
HWND hwnd = GetHWnd();
SetWindowText(hwnd, L"这是我的窗口");
_getch();
closegraph();
return 0;
}
(2)案例解读
- GetHWnd 函数用于获取窗口句柄
HWND GetHWnd();
- SetWindowText 函数用于设置窗口的标题,它是 Windows API
WINUSERAPI
BOOL
WINAPI
SetWindowTextA(
_In_ HWND hWnd,
_In_opt_ LPCSTR lpString);
WINUSERAPI
BOOL
WINAPI
SetWindowTextW(
_In_ HWND hWnd,
_In_opt_ LPCWSTR lpString);
#ifdef UNICODE
#define SetWindowText SetWindowTextW
#else
#define SetWindowText SetWindowTextA
#endif
参数 | 说明 |
---|
hWnd | 窗口句柄 |
lpString | 窗口的标题 |
- 注:必须使用宽字符字符串,格式为
L"【文本内容】"
三、多窗口尝试
#include <graphics.h>
#include <conio.h>
int main() {
HWND hwnd1 = initgraph(400, 300);
SetWindowText(hwnd1, L"这是我的窗口 1");
Sleep(3000);
HWND hwnd2 = initgraph(400, 300);
SetWindowText(hwnd2, L"这是我的窗口 2");
_getch();
closegraph();
return 0;
}
- 每次调用 initgraph 函数会销毁前一个窗口,无法同时显示多个窗口