引言
EasyX 是一个用于简化 C/C++ 编程的库,它提供了许多方便的函数和工具,可以帮助程序员更快速地开发应用程序。其中,EasyX 库提供了一些用于处理图像的函数,可以帮助程序员轻松地显示和操作图像。
在这篇博客中,我将介绍如何使用 EasyX 库来显示一张图片。
首先,你需要安装 EasyX 库。你可以从 EasyX 的官方网站上下载并安装它。安装完成后,你就可以在你的 C/C++ 项目中使用 EasyX 库了。
安装easyX库
然后点击下载,下载完成后你会得到一个exe格式得应用程序,这是easy X官方提供的安装程序,打开这个程序,找到你所对应的开发平台安装(本文章用VS2022作演示)
代码示例
2.示例代码:
#include <graphics.h>
#include <conio.h>
int main() {
// 加载图片
IMAGE img;
loadimage(&img, _T("example.png"));
// 初始化图形窗口
initgraph(img.getwidth(), img.getheight());
// 显示图片
putimage(0,0, &img);
// 等待用户按下任意键退出程序
_getch();
// 关闭图形窗口
closegraph();
return 0;
}
3.在你的项目文件夹里放入一个格式为png的名为example的图像文件
3.按快捷键“fn + F5"运行代码,运行示例:
4.代码逐行解释:
-
#include <graphics.h>
这是包含 EasyX 图形库的头文件,使得我们可以使用该库提供的各种图形函数。 -
#include <conio.h>
这个头文件包含了一些控制台输入/输出的函数,如_getch()
,用于等待用户按键。 -
int main() { ... }
这是程序的主函数,执行从这里开始。 -
// 加载图片
这里首先定义了一个
IMAGE img;
loadimage(&img, _T("example.png"));IMAGE
类型的变量img
。使用loadimage
函数加载名为 "example.png" 的图片,并将其地址存储在img
中。_T()
是用于表示字符串的宏,它可以根据编译器的设置自动选择正确的字符串格式(例如,对于 Unicode 或 ANSI)。 -
// 初始化图形窗口
使用
initgraph(img.getwidth(), img.getheight());initgraph
函数初始化一个图形窗口。窗口的大小与加载的图片的大小相同。img.getwidth()
和img.getheight()
分别返回图片的宽度和高度。 -
// 显示图片
使用
putimage(0,0, &img);putimage
函数将加载的图片显示在图形窗口的左上角(坐标为0,0)。这意味着图片会从窗口的起始位置开始显示。 -
// 等待用户按下任意键退出程序
使用
_getch();_getch()
函数等待用户按下任意键。这允许用户查看图片并按下键后继续执行其他操作或退出程序。 -
// 关闭图形窗口
使用
closegraph();
return 0;closegraph
函数关闭图形窗口。return 0;
表示程序正常结束。
检测图片是否加载成功
在一些情况下我们可能不知道图像是否被成功加载,还是别的什么地方出了问题,所以作者提供了一个简单的函数用于解决
1.设计一个函数用于处理这件事
void ifloadimage(IMAGE yuantu)
{
// 检查图像是否成功加载
if (yuantu.getwidth() > 0 && yuantu.getheight() > 0)
{
std::cout << "图像加载成功" << std::endl;
}
else {
std::cout << "图像加载失败" << std::endl;
}
}
如果图片长宽都大于0,也就是有这个图片,就在控制台输出“图像加载成功”,反之则输出“图像加载失败”,loadimage()加载完图片后是没有返回值的,所以只能出此下策
2.函数实装:增加头文件“<iostream>”(函数要用到里面的std::cout和std::endl),声明函数,再把以上函数定义放到代码末尾,再调用函数,值得一提的是用initgraph()初始化窗口时,它会阻止控制台出现,所以我们要作出一点小改变:
// 初始化图形窗口
initgraph(img.getwidth(), img.getheight(), EW_SHOWCONSOLE);
读者还可以用以下常量来初始化窗口:
NOMINIZE | 禁用最小化按钮 |
EW_SOWCONSOLE | 创建图形窗口时维护控制台窗口 |
EW_NOCLOSE | 禁用关闭按钮 |
EW_NOMINIMIZE | 禁用最小化按钮 |
EW_DBLCLKS | 支持双击事件 |
全部代码:
#include <graphics.h>
#include <conio.h>
#include <iostream>
//判断图片是否被加载成功
void ifloadimage(IMAGE yuantu);
int main() {
// 加载图片
IMAGE img;
loadimage(&img, _T("example.png"));
//判断图片是否加载成功
ifloadimage(img);
// 初始化图形窗口
initgraph(img.getwidth(), img.getheight(), EW_SHOWCONSOLE);
// 显示图片
putimage(0,0, &img);
// 等待用户按下任意键退出程序
_getch();
// 关闭图形窗口
closegraph();
return 0;
}
void ifloadimage(IMAGE yuantu)
{
// 检查图像是否成功加载
if (yuantu.getwidth() > 0 && yuantu.getheight() > 0)
{
std::cout << "图像加载成功" << std::endl;
}
else {
std::cout << "图像加载失败" << std::endl;
}
}
演示示例: