如果我们需要旋转某个图片,由于我们重绘它(比如顺时针旋转30°)可能没有合适的函数来重绘它,那怎么办呢?
答案就是:不必重新绘制,单独将这个图片旋转即可!EasyX提供了图片旋转的函数,如下:
void rotateimage( IMAGE *dstimg, IMAGE *srcimg, double radian, COLORREF bkcolor = BLACK, bool autosize = false, bool highquality = true);
第一个参数是指定目标 IMAGE 对象指针,用来保存旋转后的图像。
第二个参数用于指定原 IMAGE 对象指针。
第三个参数就是旋转的弧度。注意是弧度!不是角度!
第四个参数指定旋转后产生的空白区域的颜色。默认为黑色。
第五个参数指定目标 IMAGE 对象是否自动调整尺寸以完全容纳旋转后的图像。默认为 false。
第六个参数是指定是否采用高质量的旋转。在追求性能的场合请使用低质量旋转。默认为 true。
理论讲太多,不如一个例子来的实在,我们直接上代码:
//www.dotcpp.com #include <graphics.h> // 引用图形库头文件 #include <conio.h> #define PI 3.14159265359 int main() { IMAGE pImg; initgraph(640, 480); // 创建绘图窗口,大小为 640x480 像素 // 定义图像 IMAGE img1, img2; // 从文件加载图像 loadimage(&img1, ("C:\\logo.png")); // 旋转图像 30 度 (PI / 6) rotateimage(&img2, &img1, 30); // 显示旋转后的图像 putimage(0, 0, &img2); getch(); // 按任意键继续 closegraph(); // 关闭绘图窗口 return 0; }
首先,定义两个图像对象(可以先简单理解为就是变量),用loadimage加载原始图片到img1(笔者提前把logo放到C盘下了),然后调用rotateimage函数旋转,注意由于单位是弧度,所以我们提前定义PI除以3就是60°。保存到img2里。最后用putimage输出即可,位置位于(0,0)左上角。运行效果如下:
怎么样,大家看到效果,可以自行更改效果。
当然这里是用的外部图片加载,也可以获取其他image旋转,大家可以自由发挥!
本文固定URL:https://www.dotcpp.com/course/1207
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程