資源簡(jiǎn)介
這是一個(gè)基于Linux環(huán)境下,用gtk技術(shù)開發(fā)的電子時(shí)鐘,圖形界面優(yōu)美

代碼片段和文件信息
#include? //?繪圖所需要的頭文件
#include?
#include?
#include?
#include?
#include?
#define?WIN_W 800
#define?WIN_H 480
typedef?struct?_Window
{
GtkWidget?*main_window;
GtkWidget?*table;
GtkWidget?*hbutton_add;
GtkWidget?*hbutton_sub;
GtkWidget?*mbutton_add;
GtkWidget?*mbutton_sub;
GtkWidget?*sbutton_add;
GtkWidget?*sbutton_sub;
GtkWidget?*button_set;
GtkWidget?*button_ok;
GtkWidget?*button_cancel;
char?*gs_bmp_name[20]; //?存放圖片目錄和文件名地址的指針數(shù)組
int?gs_bmp_total; //?圖片總數(shù)
int?gs_index; //?當(dāng)前圖片標(biāo)號(hào)
char?time_buf[20]; ????//?時(shí)間buf
struct?tm?*local_time; //?time?to?show?or?modify
guint?timer_id; //?定時(shí)器id
}WINDOW;
//?設(shè)置系統(tǒng)時(shí)間
void?settime(int?tm_hour?int?tm_min?int?tm_sec)
{
struct?tm?*time_set?=?NULL;
struct?timeval?tv;
struct?timezone?tz;
/*?獲取當(dāng)前時(shí)間?*/
gettimeofday(&tv?&tz);
/*?獲取當(dāng)前時(shí)間?*/
time_set?=?gmtime(&tv.tv_sec);
/*?設(shè)置當(dāng)前時(shí)間結(jié)構(gòu)體?*/
time_set->tm_hour?=?tm_hour;
time_set->tm_min?=?tm_min;
time_set->tm_sec?=?tm_sec;
/*?獲取用秒表示的時(shí)間?*/
tv.tv_sec?=?mktime(time_set);
/*?設(shè)置當(dāng)前時(shí)間?*/
settimeofday(&tv?&tz);
}
//?給創(chuàng)建好的image重新設(shè)計(jì)一張圖片
void?load_image(GtkWidget?*image?const?char?*file_path?const?int?w?const?int?h?)
{
gtk_image_clear(?GTK_IMAGE(image)?);????????//?清除圖像
GdkPixbuf?*src_pixbuf?=?gdk_pixbuf_new_from_file(file_path?NULL); //?創(chuàng)建圖片資源
GdkPixbuf?*dest_pixbuf?=?gdk_pixbuf_scale_simple(src_pixbuf?w?h?GDK_INTERP_BILINEAR);?//?指定大小
gtk_image_set_from_pixbuf(GTK_IMAGE(image)?dest_pixbuf);?//?圖片控件重新設(shè)置一張圖片(pixbuf)
g_object_unref(src_pixbuf); //?釋放資源
g_object_unref(dest_pixbuf); //?釋放資源
}
/*?功能: 根據(jù)圖片路徑創(chuàng)建一個(gè)新按鈕,同時(shí)指定圖片大小
?*?file_path: 圖片路徑
?*?w?h: 圖片的寬度和高度
?*/
GtkWidget?*create_button_from_file(const?char?*file_path?const?int?w?const?int?h)
{
GtkWidget?*temp_image?=?gtk_image_new_from_pixbuf(NULL);
load_image(temp_image?file_path?w?h);
GtkWidget?*button?=?gtk_button_new();? //?先創(chuàng)建空按鈕
gtk_button_set_image(GTK_BUTTON(button)?temp_image); //?給按鈕設(shè)置圖標(biāo)
gtk_button_set_relief(GTK_BUTTON(button)?GTK_RELIEF_NONE); //?按鈕背景色透明
return?button;
}
/*?功能: 繪圖事件?主要是通過繪圖設(shè)置背景圖,畫時(shí)間
?*?event: 事件類型
?*?data: WINDOW變量的地址
?*/
gboolean?on_expose_event(GtkWidget?*widget?GdkEventExpose?*event?gpointer?data)
{
WINDOW?*p_temp?=?(WINDOW?*)data;
cairo_t?*cr?=?gdk_cairo_create(widget->window); //?創(chuàng)建cairo環(huán)境
//?獲取圖片
GdkPixbuf?*src_pixbuf?=?gdk_pixbuf_new_from_file(p_temp->gs_bmp_name[p_temp->gs_index]?NULL);?
//?指定圖片大小
GdkPixbuf*?dst_pixbuf?=?gdk_pixbuf_scale_simple(src_pixbuf?WIN_W?WIN_H?GDK_INTERP_BILINEAR);
//?dst_pixbuf作為cr環(huán)境的畫圖原材料,(0?0):畫圖的起點(diǎn)坐標(biāo)
gdk_cairo_set_source_pixbuf(cr?dst_pixbuf?0?0);
cairo_paint(cr); //?繪圖
cairo_set_source_rgb(cr?0?0?0);
cairo_set_font_size(cr?120.0); // 設(shè)置字體大小
cairo_move_to(cr?60?230); //?將“畫筆”移動(dòng)到圖像區(qū)域的(10.0?34.0)位置開始繪制文本
cairo_show_text(cr?p_temp->time_buf); //?寫字
cairo_destroy(cr); //?回收所有Cai
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件??????17875??2013-11-28?18:36??電子時(shí)鐘\demo
?????文件??????15129??2013-11-28?18:35??電子時(shí)鐘\demo.c
?????文件?????215287??2013-11-25?10:55??電子時(shí)鐘\demo_show.png
?????文件??????31353??2013-11-04?16:02??電子時(shí)鐘\image\1.jpg
?????文件??????40365??2013-11-04?16:02??電子時(shí)鐘\image\2.jpg
?????文件??????33936??2013-11-04?16:02??電子時(shí)鐘\image\3.jpg
?????文件??????27953??2013-11-04?16:14??電子時(shí)鐘\image\4.jpg
?????文件??????53298??2013-11-04?16:02??電子時(shí)鐘\image\5.jpg
?????文件??????76704??2013-11-04?16:02??電子時(shí)鐘\image\6.jpg
?????文件???????3484??2013-11-04?16:14??電子時(shí)鐘\image\button_add.png
?????文件???????4172??2013-11-04?16:14??電子時(shí)鐘\image\button_cancel.png
?????文件???????2962??2013-11-04?16:14??電子時(shí)鐘\image\button_ok.png
?????文件???????3857??2013-11-04?16:14??電子時(shí)鐘\image\button_set.png
?????文件???????6599??2013-11-04?16:14??電子時(shí)鐘\image\button_skin.png
?????文件???????4867??2013-11-04?16:14??電子時(shí)鐘\image\button_sub.png
????..A.SH.?????33280??2013-11-29?08:02??電子時(shí)鐘\image\Thumbs.db
?????文件????????165??2013-11-04?16:14??電子時(shí)鐘\Makefile
?????文件?????????42??2013-11-04?16:14??電子時(shí)鐘\readme.txt
????..A.SH.??????5120??2013-11-04?16:14??電子時(shí)鐘\Thumbs.db
?????目錄??????????0??2014-05-07?08:30??電子時(shí)鐘\image
?????目錄??????????0??2014-05-07?08:30??電子時(shí)鐘
-----------?---------??----------?-----??----
???????????????576448????????????????????21
- 上一篇:esp8266紅外例程
- 下一篇:Louis_IC卡.zip
評(píng)論
共有 條評(píng)論