下面用一個例子來說明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(<ime);
用系統提供的localtime()函數將長整型的時間值轉換為tm結構型變量的值,並返回指向該結構型變量的指針,該指針被賦值給指針變量pt:
pt=loclatime(<ime):
這樣便於工作可以通過pt得到時間tm結構型變量中的時、分、秒的值,即pt->tm-hour、pt->tm-min、pt->tm-sec。在計算秒針針尖的位置時用了pt->tm-sec。
time()函數和localtime()函數的原型在頭文件time.h中聲明,因此必須用#include指令將文件time.h包含到本程序中來。