Dotcpp  >  编程教程  >  C语言使用EasyX图形处理  >  如何保存局部图片(截图)?

如何保存局部图片(截图)?

点击打开在线编译器,边学边练

接上一节,我们讲到saveimage函数可以保存图片的时候提到不仅可以保存整个窗口的图片,还可以保存局部图片。

那么局部图片怎么保存呢,我们应该知道是saveimage函数第二个参数决定的。但怎么用?这一节为大家讲解!


首先,需要介绍新的函数: getimage,它可以从当前绘图设备获取截图,得到一个IMAGE类型的指针。这就是saveimage函数的第二个参数了!


老规矩,先看函数原型:

// 从当前绘图设备获取图像void getimage(
	IMAGE* pDstImg,		// 保存图像的 IMAGE 对象指针
	int srcX,			// 要获取图像区域左上角 x 坐标
	int srcY,			// 要获取图像区域的左上角 y 坐标
	int srcWidth,		// 要获取图像区域的宽度
	int srcHeight		// 要获取图像区域的高度);

第一个参数我们需要定义一个IMAGEl类型的变量,用于存这个局部图片的图像指针,然后后面四个参数表示这个图片的位置(左上角位置、图像高度、宽度等)


明白这个函数的作用之后,我们就可以这么写:

//www.dotcpp.com
#include <graphics.h>        // 引用图形库头文件
#include <conio.h>
int main()
{
    IMAGE pImg;
    initgraph(640, 480);   // 创建绘图窗口,大小为 640x480 像素
    setfillcolor(LIGHTBLUE);
    fillcircle(50,50,20);
    getimage(&pImg,30,30,40,40);
    // 保存绘制的图像
    saveimage(("D:\\dotcpp.jpg"),&pImg);
    getch();            // 按任意键继续
    closegraph();           // 关闭绘图窗口
    return 0;
}

同样,先画一个圆,由于这个圆的圆心坐标是(50,50),半径是20,因此我们在截取这个圆的时候,左上角位置至少要比圆心靠左且靠上20个像素单位,且这个局部区域的长宽至少要两倍半径这么大,因此我这里写了这样的参数:

getimage(&pImg,30,30,40,40);

然后再saveimage图像,完成代码之后大家编译运行,可以看到D盘目录下会生成新的dotcpp.jpg图像,打开可以看一下:

保存局部图片效果


大家可以看到,这样保存的图片就是一个局部图片了,由于局部矩形的大小刚刚等于圆的直径,因此上下左右会有“压边”的现象,大家可以自行修改~

怎么样,学会了吧!



本文固定URL:https://www.dotcpp.com/course/1206

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

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

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

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

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

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

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

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

C语言图形编程
第一章 easyX图形编程入门
第二章 C语言用easy画图
第三章 C语言使用EasyX绘制文本
第四章 C语言使用EasyX图形处理
第五章 EasyX项目实战
Dotcpp在线编译      (登录可减少运行等待时间)