职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 1089|回复: 0

实例:VC++中如何使用图形程序设计和动画技术

[复制链接]
俺是一只狼 发表于 2007-7-8 11:07 | 显示全部楼层 |阅读模式
摘要 本文以一个例子来说明Visual c++6.0中是如何使用图形程序设计和动画技术的。

  关键词 C++ 程序设计 动画 函数


  下面用一个例子来说明Visual c++6.0中是如何使用图形程序设计和动画技术的,这是一个图形方式的时钟程序,程序运行后以图形方式显示时钟,秒针一秒一秒地转动,该程序用到了结构型变量的指针、图形程序设计以及动画技术等一些知识,这些我们将结合程序给予说明。

  图形方式的时钟程序:

# include < time.h > //时间处理函数原型及数据结构
# include < stdio.h > //标准输入/输出函数原型及数据结构
# include <dos.h > //dos所用数据结构和函数原型
# include <conio.h > //控制台输入/输出函数原型及数据结构
# include <math.h > //数学函数原型
#include <graphics.h > //图形处理函数原型及数据结构
#define PI 3.14159
time-t l time;           //类型time-t即long
struct tm * pt; //pt为指向时间结构tm的指针
void showTime (void ); //函数原型声明
void main (void )
{
 show Time ( ); //调用图形方式显示函数
}
void show time ( void ) //以图形方式显示运转的时钟
{
 int Rs = 100; //秒针长度
 int Rc =130; //时钟外圆圈半径
 double alpha =2*PT/60.0; //秒针1秒和分针1分钟所旋转的弧度数
 int x,y; //时钟圆心坐标
 int xSecond , ySecond ; //秒针针尖位置坐标
 int driver =DETECT , mode ; //定义驱动器和模式变量并指示自动检测
 //将显示器初始化为指定的图形模式:
 initgraph ( & driver , & mode , \"c:\\\\BC31\\\\BGI\\\\\");
 x=getmaxx ( ) /2;y=getmaxy ( ) /2; //计算时钟圆心坐标

 cleardevice ( ); //图形屏幕清屏
 setbkcolor (WHITE ); //设置背景颜色
 setlinestyle (0,1,3 ); //设置画线风格:实线,3像素宽
 setcolor (LIGHTBLUE ); //设置时钟外圆圆圈的颜色
 circle (x,y,Rc); //设置时钟外圆圆圈
 while (!kbhit ()) //按下任一键则退出循环
 {
  time ( & ltime ); //读取系统时间
  pt=localtime ( & ltime); //转换为结构型并返回其指针
  xSecond = x+Rs*cos ( pt->tm-sec*alpha-PI/2);//计算秒针针尖的位置坐标
  ySecond =y+Rs*sin ( pt->tm-sec*alpha-PI/2);
  setcolor ( LIGHTRED ); //设置秒针的颜色
  line ( x,y,xSecond,ySecond); //画秒针
  delay (50); //延时50毫秒
  setcolor(BLACK); //画线颜色设置为背景颜色
  line(x,y, xSecond, ySecond); // 擦除秒针
 }
 closegraph(); //关闭图形模式
}

  该程序中用到了系统定义的存储时间数据的结构型struct tm,它在头文件time.h中定义:

struct tm{
 int tm - sec; /* Seconds*/
 int tm - min; /*Minutes*/
 int tm - hour ; /*Hour(0- -23)*/
 int tm - mday ; /*Day of month (1- -31)*/
 int tm - mon ; /*Month (0- -11)*/
 int tm - year ; /*Year(calendar year minus 1900)*/
 int tm - wday ; /*weekday (0- -6;Sunday=0)*/
 int tm - yday ; /*Day of year (0- -365)*/
 int tm - isdst ; /*0 if daylight savings time is not in effect ) */
};

  程序用系统提供的time( )函数读取系统时间,并将其存入长整型变量ltime中,该时间是一个从1970年1月1日0时0分0秒开始计时的累计秒数:

time(&ltime);

  用系统提供的localtime()函数将长整型的时间值转换为tm结构型变量的值,并返回指向该结构型变量的指针,该指针被赋值给指针变量pt:

pt=loclatime(&ltime):

  这样便于工作可以通过pt得到时间tm结构型变量中的时、分、秒的值,即pt->tm-hour、pt->tm-min、pt->tm-sec。在计算秒针针尖的位置时用了pt->tm-sec。

  time()函数和localtime()函数的原型在头文件time.h中声明,因此必须用#include指令将文件time.h包含到本程序中来。
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-5-3 04:09 , Processed in 0.127437 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表