想不想把一张图片加载到窗口上显示出来?必须的可以!

easyX首先通过loadimage加载图片,然后使用putimage输出到窗口上,来看他们的样子:

void loadimage(IMAGE *pDstImg, LPCTSTR pImgFile, int nWidth = 0, int nHeight = 0, bool bResize = false);					// Load image from a file (bmp/gif/jpg/png/tif/emf/wmf/ico)
void loadimage(IMAGE *pDstImg, LPCTSTR pResType, LPCTSTR pResName, int nWidth = 0, int nHeight = 0, bool bResize = false);	// Load image from resources (bmp/gif/jpg/png/tif/emf/wmf/ico)

putimage呢如下:

void putimage(int dstX, int dstY, const IMAGE *pSrcImg, DWORD dwRop = SRCCOPY);												// Put image to device
void putimage(int dstX, int dstY, int dstWidth, int dstHeight, const IMAGE *pSrcImg, int srcX, int srcY, DWORD dwRop = SRCCOPY);		// Put image to device

如你看到的一样,easyX中有很多函数重载,这里我们只为大家讲解比较常用的一种。

通常情况下,我们想把一张图片加载显示到窗口上,首先我们把这张图片放到项目里或者某个绝对路径下,我们就可以使用loadimage函数先加载,即使得图片加载到内存中,然后再使用putimage输出到指定窗口的位置。


这里先介绍一下一个重要的数据类型,IMAGE *pDstImg,这是这两步函数都需要的一个类(C++的概念,不懂也不要紧)

我们只需要简单知道这个是表示着这个图片的全部信息的。加载就是加载到这里。现在如果我们有一个已经放在项目下,名字叫logo.png的图片,大小为108*108的,那么加载函数就可以这么调用:

loadimage(&img,".//logo.png", 108,108,false);

第一个参数是传入参数,因此需要加地址符,第二个参数因为再目录里同级,所以用./,如果是上级则用../,绝对路径当然也可以。需要注意的是,因为C语言中字符串转义字符的存在,这里需要写两个/

之后使用putimage指定位置输出即可,我们完整的代码可以这么写:

//www.dotcpp.com
#include <graphics.h>        // 引用图形库头文件
#include <conio.h>
int main()
{
    IMAGE img;
    initgraph(640, 480);   // 创建绘图窗口,大小为 640x480 像素
    loadimage(&img,".//logo.png", 108,108,false);  //加载项目中logo.png的图片  
    putimage(10,10,&img);							//向(10,10)位置开始输出此图片
    getch();            // 按任意键继续
    closegraph();           // 关闭绘图窗口
    return 0;
}

核心两个函数调用,已经为大家加上注释,大家可以理解

C语言加载图片


大家可以换成自己的图片,改变大小亲自上机尝试~  

点赞(1)

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Dotcpp在线编译      (登录可减少运行等待时间)