接上一节,我们讲到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、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程