數字時鐘程式總結

2021-06-22 12:23:07 字數 1480 閱讀 3095

昨天看到乙個製作數字時鐘的程式,覺得很有意思,便拿來研究了一下,為了防止忘記,先總結一下,以備不時只需。

一  整個程式的框架

1)先在對話方塊中放置了乙個靜態文件,並與cdigitalclock類的物件進行關聯,以確保能夠完成資料間的傳遞。

2)在cmyclockdlg類中新增時間訊息ontimer( ),並在對話方塊初始化函式中使用settimer( )函式來觸發事件訊息。

3)在時間訊息響應函式ontimer()中使用ctime::getcurrenttime()獲取當前的時間並傳遞給cdigitalclock類的變數,以儲存現時刻的時間

4)得到了當前的時間之後,最重要的是要顯示出這個時間。程式採用了七段式的數字顯示方式,數字在顯示過程中,先定位了離靜態文件起始點的距離,數字與數字之間的間隔,以及數字的寬度,而數字的高度則是兩個寬度,數字的寬度大小是控制項高度的一半。要顯示出的時間的格式是小時:分鐘:秒,且是24小時格式顯示,這就需要有兩個數字來顯示小時,兩個數字來顯示分鐘以及兩個數字來顯示秒,就佔了6個數字的寬度,為了保此美觀,中間的"點"也佔乙個數字的寬度,這樣,整個顯示數字區的應該是8×數字的寬度+3×數字之間的間隔。

使用m_width表示數字的寬度,m_xmargin表示起點的x座標,m_ymargin表示起點的y座標,m_space表示數字與數字間的間隔。

m_width=(rect.height()-ymargin*2)/2;m_xmargin=(rect.width()-8*m_width-3*m_space)/2;知道了數字的起始點的位置之後,就可以按格式來顯示時間了。每顯示完乙個數字之後

m_ymargin+=m_width;或m_ymargin+=m_space。

5)在顯示每個數字時是使用七段式的方式來顯示的,即根據當前的時間確定需要顯示的段數,為了美觀,每個段都設計成乙個多邊形,確定各個點的位置,連成多邊形並填充上顏色。

整個程式框架就是這樣,核心就在各個數字的顯示上。

二  思想

一種由大化小的思想,要顯示整個時間就要分別顯示出小時/分鐘/秒,而小時,分鐘,秒的顯示又可小化為每個數字的顯示,每個數字的顯示具體就是數字各個段的顯示,而數字各個段的顯示則需要確定各段的點的位置。由此反回去,則就能得到整個顯示的時間。

三  使用到的類和函式

時間訊息處理函式ontimer()

crgn類,封裝了區域的操作

用到了crgn類中的createpolygonrgn()建立多邊形的函式,和createellipticrgn()建立省略區域

使用了cdc::fillrgn()函式用來填充區域

使用cdc::ellipse()函式來建立圓

使用crect::setrect()函式來建立矩形

使用了crect::offsetrect()函式來對矩形區域進行偏移

為了保證在顯示時間時不出現閃爍現象,使用了雙快取。具體的方法是先在記憶體中建立乙個與裝置相容的記憶體裝置上下文,也就是開闢一塊記憶體區來作為顯示區域,然後在這個記憶體區進行繪製圖形。在繪製完成後利用 bitblt函式把記憶體的圖形直接拷貝到螢幕上。

簡易數字時鐘

功能描述 用四個7段數碼管來顯示時間,並可以用兩個按鍵來調整時間。電路原理圖 程式 include sbit hou shi p3 6 sbit hou ge p3 7 sbit min shi p3 5 sbit min ge p3 4 sbit sec dian p3 0 int num 0,h...

openframework 數字時鐘

為什麼選擇openframework?第乙個原因是openframework可以用vs開發,至少編輯器好上手 第二個原因是它和processing都可以做藝術程式設計 備註 雖然是國內資料少一點,只要用心查詢,肯定會找到了 最好是翻牆查詢資料,國內的環境實在是不想吐槽了 該文章的效果是在openpr...

c winform LED數字時鐘控制項

包含顏色選擇器,日曆控制項 類似於google日曆 數字時鐘,led等控制項 1.日曆控制項 calendar.rar 2.office 2003中的顏色選擇器 officepickers.rar 3.自定義顏色的滑動條 colorslider.rar 4.數字時鐘 c 中建立乙個時鐘控制項 邊框外...