龙空技术网

C语言知识分享:使用C语言实现一段动画效果,简单又易懂!

工控小新 240

前言:

目前我们对“用c语言处理图像的方法”大约比较重视,咱们都想要分析一些“用c语言处理图像的方法”的相关文章。那么小编同时在网摘上网罗了一些关于“用c语言处理图像的方法””的相关知识,希望你们能喜欢,咱们快快来学习一下吧!

追溯到上世纪90年代,早期的动画是画在透明塑料板上,把需要的图层一张张叠起来,然后用摄像机拍一帧,一帧就搞定了,然后再画下一帧。某些没有变化的部分可以沿用上一帧的那个板子。比如一个人说话那画几张嘴和一个脸,然后用脸+不同张的嘴就能做出整个镜头了。

也有点类似于我们小时候玩过的动画小手册一样。

动画原理:

动画效果是指让静态的图像在屏幕上产生运动的视觉效果,它的原理是利用人眼的视觉暂留现象,即人眼在看到一个物体后,会在短时间内保留这个物体的影像。如果在这段时间内,快速地显示不同的图像,人眼就会认为这些图像是连续的,从而形成动画效果。一般来说,每秒显示24帧以上的图像,就可以让人眼感觉到流畅的动画效果

操作步骤:

而接下来,我们可以使用C语言程序,将这些图像展示成一个动画效果。

要使用Easy X和C语言制作动画效果,我们需要以下几个步骤:

1、初始化绘图窗口,设置窗口的大小、背景色、坐标系等属性。

2、使用loadimage函数加载或创建要显示的图像,可以是位图、JPEG、PNG等格式的文件,也可以是用Easy X函数绘制的图形。

3、在循环中,根据时间或事件,改变图像的位置、大小、角度、透明度等属性,然后用putimage函数将图像绘制到绘图窗口中。

使用putimage时我们不再使用之前讲的那么简单的参数版本,而是使用更多参数的一个版本:

void loadimage(IMAGE* pDstImg,        // 保存图像的 IMAGE 对象指针LPCTSTR pResType,        // 资源类型LPCTSTR pResName,        // 资源名称int nWidth = 0,        // 图片的拉伸宽度int nHeight = 0,        // 图片的拉伸高度bool bResize = false    // 是否调整 IMAGE 的大小以适应图片);

void putimage(int dstX,              // 绘制位置的 x 坐标int dstY,              // 绘制位置的 y 坐标int dstWidth,          // 绘制的宽度int dstHeight,         // 绘制的高度IMAGE *pSrcImg,            // 要绘制的 IMAGE 对象指针int srcX,              // 绘制内容在 IMAGE 对象中的左上角 x 坐标int srcY,              // 绘制内容在 IMAGE 对象中的左上角 y 坐标DWORD dwRop = SRCCOPY    // 三元光栅操作码);

关键参数:

srcX srcY:

他俩表示的是image图像中的左上角位置,那么加上前面第三第四参数的作用,我们就可以做到选择性的输出图片中的部分内容!!

4、在每次绘制图像后,延时时间,然后再次使用putimage函数再次展示下一话图片。

5、在循环结束后,用closegraph函数关闭绘图窗口,释放资源。

完整代码:

下面是一个简单的示例代码,它可以实现一个圆形图像在绘图窗口中左右移动的动画效果:

//微信公众号:工控小新#include <graphics.h>        // 引用图形库头文件#include <conio.h>int main(){    int i;    IMAGE img;    initgraph(640, 480);   // 创建绘图窗口,大小为 640x480 像素    loadimage(&img,".//tjq.png");  //加载项目中图片      while(1)    {        for(i=0;i<4;i++)        {            putimage(100,100,160,210,&img,i*160,0,SRCCOPY);            Sleep(500);        }        for(i=0;i<4;i++)        {            putimage(100,100,160,210,&img,i*160,210,SRCCOPY);            Sleep(500);        }    }    getch();            // 按任意键继续    closegraph();           // 关闭绘图窗口    return 0;}

觉得有用的话,动动你们的小手,点个转发在看,非常感谢!!!

点赞加关注,学习不迷路

微信公众号|工控小新

EPLAN电气绘图、TIA博图基础 、CAD、C语言教学、单片机基础、三菱PLC ... 每日持续更新中

#挑战30天在头条写日记#

标签: #用c语言处理图像的方法 #c语言处理图像