Dotcpp  >  编程教程  >  C语言使用EasyX图形处理  >  如何旋转图片?

如何旋转图片?

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

如果我们需要旋转某个图片,由于我们重绘它(比如顺时针旋转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、信息学奥赛的必学课程:算法竞赛课入门课程

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

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