当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 3 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 网上找到一个gtk的时钟可能编译运行。
帖子发表于 : 2009-06-13 22:49 

注册: 2008-11-18 8:50
帖子: 89
送出感谢: 0 次
接收感谢: 0 次
#include <gtk/gtk.h>

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

#define PI 3.1415926



GtkWidget *window;

GtkWidget *da;

gint i,j;

gint ex,ey;



static void destroy(GtkWidget *widget,gpointer data)

{

gtk_main_quit();

}



gboolean chPosition() //

{

gint tempx=ex;

gint tempy=ey;

gdk_window_invalidate_rect(da->window, NULL, FALSE);

return TRUE;

}



gboolean my_expose(GtkWidget *da,GdkEventExpose *event,gpointer data )

{

GdkGC *gc1,*gc2,*gc;

GdkColor color;

gint i,x,y,x1,y1,x2,y2;

gdouble alpha,alpha2;

struct tm *now_tm;

time_t now;

gint second,minute,hour;



gc1 = gdk_gc_new(da->window);

color.red = 0;

color.green = 0;

color.blue = 0;

gdk_gc_set_rgb_fg_color(gc1,&color);



gc2 = gdk_gc_new(da->window);

color.red = 65535;

color.green = 0;

color.blue = 0;

gdk_gc_set_rgb_fg_color(gc2,&color);



time (&now);

now_tm = localtime(&now);

second = now_tm->tm_sec;

minute = now_tm->tm_min;

hour = now_tm->tm_hour;



gc = gc2;

gdk_draw_arc(da->window,gc,FALSE,50,50,500,500,0,64*360);



alpha2=(30*(-hour+12)- minute*6*5/60 )*PI/180;

x2=300+cos(alpha2+PI/2)*250*0.65;

y2=300-sin(alpha2+PI/2)*250*0.65;



gc = gc1; //時

gdk_draw_line(da->window,gc,x2,y2,300,300);



alpha2=(6*(-minute+60)-second*6/60)*PI/180 ;

x2=300+cos(alpha2+PI/2)*250*0.75;

y2=300-sin(alpha2+PI/2)*250*0.75;



gc = gc1; //分

gdk_draw_line(da->window,gc,x2,y2,300,300);



alpha2=(6*(-second+60)*PI/180);

x2=300+cos(alpha2+PI/2)*250*0.85;

y2=300-sin(alpha2+PI/2)*250*0.85;



gc = gc2; //秒

gdk_draw_line(da->window,gc,x2,y2,300,300);



gc = gc1;

for(i=12;i>=1;i--)

{

alpha=(30*(11-i)*PI/180);

x=300+cos(alpha)*250;

y=300-sin(alpha)*250;

x1=300+cos(alpha)*250*0.9;

y1=300-sin(alpha)*250*0.9;

gdk_draw_line(da->window,gc,x,y,x1,y1);

gdk_draw_string(da->window,gtk_style_get_font(gtk_widget_get_style(window)),gc,295,90,"12");

gdk_draw_string(da->window,gtk_style_get_font(gtk_widget_get_style(window)),gc,295,520,"6");

gdk_draw_string(da->window,gtk_style_get_font(gtk_widget_get_style(window)),gc,80,305,"9");

gdk_draw_string(da->window,gtk_style_get_font(gtk_widget_get_style(window)),gc,520,305,"3");

gdk_draw_string(da->window,gtk_style_get_font(gtk_widget_get_style(window)),gc,220,580,"Nigel Yan---2009-05-27---BXC");

}



for(i=60;i>=1;i--)

{

alpha=(6*(60-i)*PI/180);

x=300+cos(alpha)*250;

y=300-sin(alpha)*250;

x1=300+cos(alpha)*250*0.95;

y1=300-sin(alpha)*250*0.95;

if (i%5==0)

{

//do nothing

}

else

{

gdk_draw_line(da->window,gc,x,y,x1,y1);

}

}



g_object_unref(G_OBJECT(gc1));

g_object_unref(G_OBJECT(gc2));



return TRUE;

}



void leave_notify_event(GtkWidget *widget, GdkEventMotion *event)

{

gint x, y;

GdkModifierType state;

GdkRectangle rect;

if (event->is_hint)

gdk_window_get_pointer(event->window,&x,&y,&state);

else{

x = (gint)event->x;

y = (gint)event->y;

state = event->state;

}

gdk_window_invalidate_rect(da->window,&rect,FALSE);



}



int main(int argc, char *argv[])

{



gtk_init(&argc,&argv);

window = gtk_window_new(GTK_WINDOW_TOPLEVEL);



gtk_window_set_title(GTK_WINDOW(window),"Clock"); //這個隻是給個名字。

gtk_window_set_resizable (GTK_WINDOW (window), FALSE); //讓放大窗口無效。



gtk_widget_add_events( GTK_WIDGET(window), GDK_KEY_PRESS_MASK |GDK_KEY_RELEASE_MASK|GDK_BUTTON_PRESS_MASK);

g_signal_connect(G_OBJECT(window),"destroy",G_CALLBACK(destroy),NULL);

gtk_signal_connect(GTK_OBJECT(window),"leave_notify_event", GTK_SIGNAL_FUNC(leave_notify_event),NULL);



da = gtk_drawing_area_new();



gtk_widget_set_size_request(da,600,600);

gtk_container_add(GTK_CONTAINER(window),da);

g_signal_connect(da,"expose_event",G_CALLBACK(my_expose),NULL);



gtk_widget_show_all(window);

g_timeout_add(10,(GSourceFunc)chPosition,NULL);

gtk_main();

return 0;

}


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 网上找到一个gtk的时钟可能编译运行。
帖子发表于 : 2009-06-15 7:18 
头像

注册: 2008-10-29 22:16
帖子: 133
送出感谢: 0 次
接收感谢: 0 次
太粗糙了


_________________
代码:
苏老泉,二十七,始发愤,读书籍。彼既老,犹悔迟。尔小生,宜早思!!


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 网上找到一个gtk的时钟可能编译运行。
帖子发表于 : 2009-06-25 13:33 
头像

注册: 2009-06-21 19:38
帖子: 210
地址: CUMT
送出感谢: 0 次
接收感谢: 0 次
哈哈,很强大!~看不懂啊~ :em06


_________________
代码:
sudo apt-get install girlfriend
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
有一些软件包无法被安装。
下列的信息可能会对解决问题有所帮助:
下列的软件包有不能满足的依赖关系:
girlfriend: 依赖: house但是它将不会被安装
girlfriend: 依赖: car但是它将不会被安装
house,car: 依赖: money但是它将不会被安装
E: 无法安装的软件包


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 3 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译