程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> VC++中使用圖形程序設計和動畫技術

VC++中使用圖形程序設計和動畫技術

編輯:vc教程

  下面用一個例子來說明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包含到本程序中來。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved