个人技术分享

一、问题

        利⽤ C语⾔中的图形函数可以实现动画吗?怎样实现?

二、解答

        动画其实就是快速切换的页⾯。如果动画中变化的元素⽐较集中,可以使⽤绘画、延时的⽅法来制作。例如,在下⾯的程序中,先绘制⼀个逆时针⽅向逐渐打开的圆,完全打开后,第⼆圈再按逆时针⽅向逐渐改变成淡颜⾊,第三圈擦除图形。

#include <stdio.h>
#include <math.h>
#include <graphics.h>
int main()
{

    int driver, mode;
    int i, maxx, maxy, x, y, r, colormax;
    detectgraph(&driver, &mode);
    initgraph(&driver, &mode, "d:\\tc");
    maxx = getmaxx() / 2;
    maxy = getmaxy() / 2;
    maxx < maxy ? maxx : maxy;
    colormax = getmaxcolor();
    for (i = 0; i < 360; i++)
    {
        setcolor(i % colormax + 1);
        x = maxx + r * sin(i * 3.1416 / 180);
        y = maxy + r * cos(i * 3.1416 / 180);
        line(maxx, maxy, x, y);
        delay(10000);
    }
    sleep(1);
    for (i = 0; i < 360; i++)
    {
        setcolor(i % 3 + 1);
        x = maxx + r * sin(i * 3.1416 / 180);
        y = maxy + r * cos(i * 3.1416 / 180);
        line(maxx, maxy, x, y);
        delay(10000);
    }
    sleep(1);
    setcolor(getbkcolor());
    for (i = 0; i < 360; i++)
    {
        x = maxx + r * sin(i * 3.1416 / 180);
        y = maxy + r * cos(i * 3.1416 / 180);
        line(maxx, maxy, x, y);
        delay(10000);
    }
    closegraph();
}

三、总结

        动画有很多种形式,上⾯讲的只是其中⼀种。只要知道它的基本原理,就可以作出各种形式的动画。