9w-动画工具包介绍by张艳梅.pptVIP

  • 1
  • 0
  • 约2.35千字
  • 约 38页
  • 2019-12-02 发布于湖北
  • 举报
动画工具包介绍 -Egg库、EasyX;提纲;图形库函数EGG简介;可共享的库文件-静态库文件;可共享的库文件-动态库文件;Egg库使用方法;Egg-创建并初始化动画窗口;Egg窗口坐标;动画实现 盘子: Egg图形窗口的昵称 蛋egg:透明的图形元素篮子、可以控制移动。 所绘制的图形元素都是画在egg上。初始有一个背景egg,之后你可以自己LayEgg,生多少egg都可以。 每个egg是独立移动,不会影响其它的egg。;可以下多个egg蛋,当两个蛋重合,后下的蛋会覆盖先下的蛋。使用ChangeEggLayer()可以改变egg的层次,调整互相之间的覆盖关系。 需要特别注意的是,在egg上绘画时,所采用的坐标系是每个egg自己的独立坐标,而不是盘子坐标。也就是说,绘画时,不需要考虑egg在盘子内的位置(egg会移动),egg自己的左下角永远是坐标原点。 ;如何下蛋: 每次调用LayEgg()都会生成一个新的egg,并把这个egg的句柄返回给你。 HEGG LayEgg(void); 执行完EggStart()后,便已经偷偷建立了一个背景蛋,所有的绘图操作,都是在这个egg上进行的。当LayEgg()后,再执行绘图操作,就是在新的egg上绘图了。 ;Egg-生成动画对象 画蛋;Egg-画笔;画笔相关函数;Egg-画蛋;Egg-画蛋;Egg-画蛋;;#include egg.h #define NUMBER_OF_EGG 5 int main(void) { HEGG hEggs[NUMBER_OF_EGG]; int i; EggStart(100,50); for (i=0; iNUMBER_OF_EGG; i++) { hEggs[i] = LayEgg(); DrawArc(i+10, 180, 180);//在当前活动的蛋上画一个半圆 } WaitForExit(); //等待用户关闭窗口 return 0; } ;Egg-画蛋;Egg-画蛋;Egg-画蛋;;如何设置活动蛋(被激活的蛋): 绘图和移动都是在活动蛋上进行的; 如果想回头在旧egg上绘图,可以使用 void SetActiveEgg(HEGG hEgg)函数 将旧的egg变成活动蛋 因此,需要把每次LayEgg()的返回值(egg的句柄)保存下来,从而将旧蛋变成活动蛋; ;如何动蛋 移动是在活动蛋上进行的。移动一个蛋时,该蛋上所有的图形都会一起动。 如果只是想动整个图形的一部分(如电梯、小火车),则该部分一定要在一个独立的egg上绘制。 void MoveEgg(double x, double y); 在盘子上移动活动egg到盘子内的坐标x,y处 void OffsetEgg(double dx, double dy); 在盘子上把活动egg移动 (dx,dy) 位移;//画5个能分别动起来的半圆 void donghua1(void) { HEGG hEggs[NUMBER_OF_EGG]; int i; EggStart(100,50); //画5个不同半径的半圆 for (i=0; iNUMBER_OF_EGG; i++){ hEggs[i] = LayEgg(); DrawArc(i+10, 180, 180); } ; //让5个半圆分别移动 i = 0; while (WaitFor(100)){ SetActiveEgg(hEggs[i]); OffsetEgg((NUMBER_OF_EGG - i - 1) * 10, 0); if (i NUMBER_OF_EGG - 1) i++; else i = 0; } } ;//画5个能同时动起来的半圆 void donghua2(void) { HEGG hEggs[NUMBER_OF_EGG]; int i; EggStart(100,50); SetAutoUpdate(0); //设置不自动更新屏幕 for (i=0; iNUMBER_OF_EGG; i++){ hEggs[i] = LayEgg(); DrawArc(i+10, 180, 180); }; Update();//也可以不要 i = 0; while (WaitFor

文档评论(0)

1亿VIP精品文档

相关文档