C/C++ EasyX图形库
Last updated on 2 years ago
EsayX头文件
头文件有两个
graphics.h:包含了已经被淘汰的函数
easyx.h:只有最新的函数
窗口的创建与关闭
- initgraph(int x ,int y ,int style):x,y为窗口大小,style为是否显示控制台
- closegraph():关闭窗口
设置窗口属性
- **setbkcolor(颜色)**:设置窗口颜色
- 颜色宏:颜色英文大写,可在easyx.h文件中支持的颜色
- RGB
基本绘图函数
**line(int x,int y.int xx .int yy)**:两点确定一条直线
circle(int x ,int y ,int r):使用圆心和半径画圆
- fillcircle(int x,int y ,int r):填充圆(带边界线)
- solidcircle(int x,int y,int r):填充圆(不带边界线)
**rectangle(int x ,int y ,int xx ,int yy)**:使用左上角坐标,右下角坐标画矩形
- fillrectangle(int x,int y,int xx,int yy):填充矩形(带边界线)
- solidrectangle(int x,int y,int r):填充矩形(不带边界线)
setfillcolor(颜色):设置填充颜色
cleardevice():刷新
贴图
定义IMAGE变量
1 |
|
加载图像
1 |
|
显示图像
1 |
|
原样贴图:按照上面步骤进行
透明贴图
使用位与运算显示二进制掩码图
1
putimage(int x,int y,IMAGE* img,SRCAND);
使用位异或运算显示背景图
1
putimage(int x,int y,IMAGE* img,SRCPAINT);
png贴图
直接载入的话透明部分会显示为黑色,可通过算法解决。(自行寻找)
透明贴图素材制作与原理
二进制掩码图:
将需要设置成透明的部分填充成白色,要保留的部分填充成黑色,用1表示白色,0表示黑色,故称为二进制掩码图
背景图:
将需要设置成透明的部分填充成黑色,要保留的地方不变
原理(个人理解):
以下内容仅为个人理解,没有任何依据,仅供方便理解记忆
以下内容仅为个人理解,没有依据,仅供方便理解参考
我们可以用setcolor()设置窗口背景颜色,或是使用putimage()设置一张图片作为窗口背景图,用二进制表示每个位的颜色,0为黑,其余统一为1。
接着使用**SRCAND()**将二进制掩码图和窗口背景图进行位与运算,由于掩码图将需要保留的部分填充为黑色,将需要透明的部分填充为白色,与运算后,会得到一张需要保留的部分为黑色,需要成透明的部分为窗口背景图的图,称为a
最后使用SRCPAINT(),将背景图与a进行位异或运算,由于背景图要保留的部分是不为黑的1,透明部分为黑0,与b运算后,会得到一张
所需要的透明图了。
交互
阻塞式交互
不交互就无法继续进行
非阻塞式交互
不交互仍然会进行
定时器和双缓冲绘图
定时器
sleep()是一个全局阻塞,可以使用定时器进行单个对象的刷新
1 |
|
双缓冲绘图
双缓冲绘图是指,在屏幕看不见的地方,先将图形绘制出来,然后再移动到指定位置,可以避免频闪问题。
1 |
|
键盘交互
1 |
|
虚拟键码 (Winuser.h) - Win32 apps | Microsoft Learn