求助!哪位大侠能给一个Gtk CPU动态曲线源代码?

debian 開發版,這個版面主要是要討論 debian@taiwan or debian@chinese 相關開發議題,所謂開發如 debian 中文化問題、文件製作維護問題、程式開發問題...最終目的是能從這個版面的討論成立一個接一個的工作小組來幫助 debian@taiwan or debian@chinese 發展,讓 taiwan 或華人能更方便的使用 debian。

求助!哪位大侠能给一个Gtk CPU动态曲线源代码?

文章chengguyun » 週日 12月 07, 2008 9:56 pm

:( 小弟最近学习GTK ,想要用GTK 绘制一个动态曲线,比如就像CPU负载动态曲线那样,实时获得数据并绘制出动态曲线!拜托哪位大侠给点指点!或者给个源代码!不胜感激!
chengguyun
可愛的小學生
可愛的小學生
 
文章: 3
註冊時間: 週日 12月 07, 2008 9:43 pm

文章granziliao » 週一 12月 08, 2008 6:19 am

要交作業了喔?
凡發生之事必合理
頭像
granziliao
可愛的小學生
可愛的小學生
 
文章: 99
註冊時間: 週三 6月 18, 2003 9:23 am
來自: 板橋後埔

文章chengguyun » 週一 12月 08, 2008 10:52 am

:crying: 怎么没人帮我? :crying:
chengguyun
可愛的小學生
可愛的小學生
 
文章: 3
註冊時間: 週日 12月 07, 2008 9:43 pm

文章tomjpsun » 週一 12月 08, 2008 11:27 am

這邊問問題的前題是:你曾努力過!但是遇到問題無法繼續!
tomjpsun
可愛的小學生
可愛的小學生
 
文章: 82
註冊時間: 週一 1月 03, 2005 2:40 pm

文章CoolBSD » 週一 12月 08, 2008 12:38 pm

gboolean redraw(GtkWidget *widget, GdkEvent *event, gpointer data)
{
GdkColor myColor;

GdkGC *GCA=NULL;//for arrival line color
GdkGC *GCD=NULL;//for departure line color

//arrival line config 線顏色的設定
GCA=gdk_gc_new(widget->window);
myColor.red = 30000;
myColor.green = 0;
myColor.blue =30000;
gdk_gc_set_rgb_fg_color (GCA,&myColor);

//departure line config
GCD=gdk_gc_new(widget->window);
myColor.red = 0;
myColor.green = 0 ;
myColor.blue = 0;
gdk_gc_set_rgb_fg_color (GCD,&myColor);


gdk_draw_rectangle (widget->window,
widget->style->white_gc,
TRUE,
0, 0,
(gint)DRAW_AREA_WIDTH,
(gint)DRAW_AREA_HEIGHT);
#ifdef DEBUGMSG

printf("white width%d",(3/4*DRAW_AREA_WIDTH));
printf("white height%d",(3/4*DRAW_AREA_WIDTH));
#endif

//gdk_gc_set_rgb_bg_color (GC,&myColor);
//gdk_gc_set_background(GC,&myColor);
//gdk_gc_set_line_attributes (GC,12,2,1,1);
float fHeightRatio = DRAW_AREA_HEIGHT/iTotalCustomer;
float fWidthRatio = DRAW_AREA_WIDTH/iSimTotalPeriod;
int iCount;

for(iCount=0;iCount<iTotalCustomer;iCount++)
{
#if 1
//arrival draw 畫線的函數
gdk_draw_line (widget->window,
GCA,
(gint)fArrival_Time[iCount]*fWidthRatio,
(gint)(DRAW_AREA_HEIGHT- iCount*fHeightRatio),
(gint)fArrival_Time[iCount]*fWidthRatio,
(gint)(DRAW_AREA_HEIGHT- (iCount+1)*fHeightRatio) );

gdk_draw_line (widget->window,
GCA,
(gint)fArrival_Time[iCount]*fWidthRatio,
(gint)(DRAW_AREA_HEIGHT- (iCount+1)*fHeightRatio),
(gint)fArrival_Time[iCount+1]*fWidthRatio,
(gint)(DRAW_AREA_HEIGHT - (iCount+1)*fHeightRatio) );
#endif
//departure draw
gdk_draw_line (widget->window,
GCD,
(gint)fDeparture_Time[iCount]*fWidthRatio+2,
(gint)(DRAW_AREA_HEIGHT - iCount*fHeightRatio)+2,
(gint)fDeparture_Time[iCount]*fWidthRatio+2,
(gint)(DRAW_AREA_HEIGHT - (iCount+1)*fHeightRatio)+2 );

gdk_draw_line (widget->window,
GCD,
(gint)fDeparture_Time[iCount]*fWidthRatio+2,
(gint)(DRAW_AREA_HEIGHT - (iCount+1)*fHeightRatio)+2,
(gint)fDeparture_Time[iCount+1]*fWidthRatio+2,
(gint)(DRAW_AREA_HEIGHT - (iCount+1)*fHeightRatio)+2 );
}
g_object_unref (GCA);
g_object_unref (GCD);
return TRUE;
}

當然還要有一些前製作業,會有一個GtkWidget * GtkMainDraw(){} 裏面要宣告widget和signal 大致上概念是這樣。

請額外參考
http://caterpillar.onlyfun.net/Gossip/G ... ossip.html

http://debian.linux.org.tw/~kevpeng/

另外就是到http://library.gnome.org/devel/gtk/stable/ 參考function用法
CoolBSD
 


回到 debian develop

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客