首頁 > 軟體

C語言繪製簡單時鐘小程式

2022-06-14 14:03:25

本文範例為大家分享了C語言繪製時鐘小程式的具體程式碼,供大家參考,具體內容如下

先貼效果圖給大家先看看

基本機制是通過獲取系統的時鐘去繪製圖線進行展示

貼出程式碼 ,大家可以直接使用的 .程式我進一步的講解

#include <graphics.h>
#include <conio.h>
#include <math.h>
#include <time.h>
 
#define high 480
#define width 640
#define pi 3.141592
 
int main()
{
 
    initgraph(high, width);
 
    int center_x, center_y;
    center_y = width / 2;  // 320
    center_x = high / 2; // 240
    
    SYSTEMTIME ti; //獲取系統的時間
 
    // 秒針屬性
    int secondEnd_x, secondEnd_y;
    int secondLenth = 120; 
    secondEnd_x = center_x + secondLenth;
    secondEnd_y = center_y;
    float secondAngle = 0;
    
    // 分鐘屬性
    int minuteEnd_x, minuteEnd_y;
    float minuteAngle = 0;
    int minuteLenth = 90;
    minuteEnd_x = center_x + minuteLenth;
    minuteEnd_y = center_y + minuteLenth;
 
    //  時鐘屬性
    int hoursEnd_x, hoursEnd_y;
    float hoursAngle = 0;
    int hoursLenth = 60;
    hoursEnd_x = center_x + hoursLenth;
    hoursEnd_y = center_y + hoursLenth;
 
    BeginBatchDraw();
 
    while (1)
    {
        // 獲取時間
        GetLocalTime(&ti);
 
        //繪製中心座標
        //setlinecolor(WHITE);
        //fillcircle(center_x, center_y, 2);
 
        // 繪製一個錶盤
        setbkcolor(BLACK);
        setlinestyle(PS_SOLID, 1);
        setlinecolor(WHITE);
        circle(center_x, center_y, 130);
        //outtextxy(center_x - 25, center_y + width / 6, "我的時鐘");
        // 輸出字串 (VC6)
        TCHAR s[] = _T("我的時鐘");
        outtextxy(210, 400, s);
 
        // 繪製錶盤刻度
        int  x, y, i;
        for (i = 0; i < 60; i++)
        {
            x = center_x + 125 * sin(i * 2 * pi / 60);
            y = center_y - 125 * cos(i * 2 * pi / 60);
 
            // 一刻鐘
            if (i % 15 == 0)
            {
                bar(x - 5, y - 5, x + 5, y + 5);
            }
            else if ( i % 5 == 0) //5分鐘
            {
                circle(x, y, 3);
            }
            else
            {
                putpixel(x, y, WHITE); // 小白點
            }
        }
 
        
        //轉動秒針
        secondAngle = ti.wSecond * 2 * pi / 60;    //    2 * pi / 60 =一秒鐘走的角度   ti.wSecond  =系統當前秒
        secondEnd_x = center_x + secondLenth * sin(secondAngle);
        secondEnd_y = center_y - secondLenth * cos(secondAngle);
 
        //轉動分鐘
        minuteAngle = ti.wMinute * 2 * pi / 60  + secondAngle / 60;
        minuteEnd_x = center_x + minuteLenth * sin(minuteAngle);
        minuteEnd_y = center_y - minuteLenth * cos(minuteAngle);
 
        //轉動時鐘
        hoursAngle = ti.wHour * 2 * pi / 12 + minuteAngle / 60;
        hoursEnd_x = center_x + hoursLenth * sin(hoursAngle);
        hoursEnd_y = center_y + hoursLenth * cos(hoursAngle);
 
        // 繪製秒針
        setlinecolor(YELLOW);
        setlinestyle(PS_SOLID, 1);
        line(center_x, center_y, secondEnd_x, secondEnd_y);
 
        // 繪製分鐘
        setlinecolor(BLUE);
        setlinestyle(PS_SOLID, 3);
        line(center_x, center_y, minuteEnd_x, minuteEnd_y);
 
        // 繪製時鐘
        setlinecolor(RED);
        setlinestyle(PS_SOLID, 5);
        line(center_x, center_y, hoursEnd_x, hoursEnd_y);
 
        FlushBatchDraw();
        Sleep(50);
 
        //隱藏 秒針
        setlinecolor(BLACK);
        line(center_x, center_y, secondEnd_x, secondEnd_y);
 
        //隱藏 分針
        setlinecolor(BLACK);
        line(center_x, center_y, minuteEnd_x, minuteEnd_y);
 
        //隱藏 時針
        setlinecolor(BLACK);
        line(center_x, center_y, hoursEnd_x, hoursEnd_y);
    }

    EndBatchDraw();
    _getch();
    closegraph();
 
    return 0;
}

第一:秒鐘角度轉動的講解

1.首先數學基礎不錯的都知道 , 一個圓圈 ,一圈的角度是 2π ,所以 一秒就是2π/60 .

2. angle 角度 就是指 和 12點鐘方向的夾角 ,比如 1點和12點的夾角就是30° , 也就是 2π/12 .

第二:講解錶盤刻度的繪製

1. 將錶盤的刻度分為60份 , 並且都表為小白點

2. 5份刻度記為1小時 ,標記為小白圈

3. 15份刻度為一刻鐘=15分鐘.

好了 ,程式就是這麼簡單! 大家可以去試試

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com