| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1313 人关注过本帖
标题:利用图形页实现动画的方法
只看楼主 加入收藏
莱哥
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-5-27
收藏
 问题点数:0 回复次数:2 
利用图形页实现动画的方法

计算机图形的动画显示实际上是一系列静止图像在不同位置的重放,大部分动态现实程序模拟运动的基本方法是相同的,即在屏幕某一显示位置上先擦出一个静止图像,然后在临近的位置上绘出下一副图,程序重复的执行擦出和绘制过程,就产生所需要的动画效果.这种动画方式对于简单的图形效果是很好的,但对于较为复杂的图形来说,效果就不是很好了,为了解决这一问题,用多页显示绘图的方法很有效.

在turbo c的图形子系统中,提供了两条重要的页面设置函数,即设置图形输出活动页函数setactivepage()和设置可见图形页函数setvisualpage(),其用法为:

#include void far setactivepage();
void far setvisualpage();

图形页实际上是一个虚假页面,是内存中开辟的一块内存缓冲区.活动图像也可以是当前显示页,也可以是非显示页,当用函数setactivepage()选定某一页为活动页后,其后所有的图形输出都针对该页,有了多个图形页,程序就可以将图形输出到一个非显示屏幕页上,然后通过调用setvisualpage()改变可见页来快速显示,关闭图形页面中的画面.

多个图形页交替显示的过程如下: 在所用的两个页面中,当一个可见页面用于显示时,另一个关闭页用于绘图.当新的画面上成后,就把两页进行转换,原作为显示用的页面在用来绘制新的图形.一般可把画面显示顺序作如下安排,第一页用于显示动画过程的1,3,5...等画面,第二页用于显示2,4,6...等画面,如此交替下去,利用页面转换技术进行动态显示,图形的擦出和重画过程都在后台进行,屏幕上出现的仅是整幅画面的瞬间切换,其动态效果十分平滑,如下面的程序.

#include <graphics.h>
#include <stdio.h>
#include <stdlib.h>
#include <alloc.h>
#include <math.h>
main()
{void * ptr;
int gd=DETECT,gm;
float i;
initgraph(&gd,&gm,"d:\\tc");
setactivepage(1);
setcolor(RED);
setfillstyle(1,14);
fillellipse(10,10,10,10);
ptr=malloc(imagesize(0,0,20,20));
getimage(0,0,20,20,ptr);
randomize();
setactivepage(0);
for(i=0;i<3000;i++)
putpixel(random(640),random(480),random(15));
for(i=0;i<6.28*4;i=i+0.005)
{putimage(300+8*(cos(i)+i*sin(i)),240+6*(sin(i)-i*cos(i)),ptr,COPY_PUT);
putimage(300+8*(cos(i)+(i)*sin(i)),240+6*(sin(i)-(i)*cos(i)),ptr,COPY_PUT);
if(kbhit()) break;
delay(10);
}
getch();
closegraph();
}

搜索更多相关主题的帖子: 图形页 动画 计算机 函数 效果 
2006-05-27 18:07
dexingtuohai
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-6-15
收藏
得分:0 
太牛拉
2007-07-10 19:48
yuerhb
Rank: 1
等 级:新手上路
威 望:1
帖 子:241
专家分:0
注 册:2007-6-1
收藏
得分:0 

不错


学编程。。。。再难也得上!!!
2007-07-13 10:21
快速回复:利用图形页实现动画的方法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017660 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved