追溯到上世纪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 ... 每日持续更新中