討論區快速選單
知識庫快速選單
政府補助!學嵌入式+物聯網 討論區最近新進100則主題
[ 回上頁 ] [ 討論區發言規則 ]
如何用GTK寫一個畫線程式
更改我的閱讀文章字型大小
作者 : edward_fang(edward_fang)
[ 貼文 24 | 人氣 4313 | 評價 0 | 評價/貼文 0 | 送出評價 8 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/5/20 上午 12:51:51
我想用GTK寫一個畫線程式, 亦即輸入X及Y之值, 則會畫出X-Y關係的曲線圖。

請問有何Demo程式或相關資料可供參考, Thank you !!
作者 : moocow(MooCow) 貼文超過200則
[ 貼文 379 | 人氣 4677 | 評價 760 | 評價/貼文 2.01 | 送出評價 18 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/6/1 上午 07:22:26
>我想用GTK寫一個畫線程式, 亦即輸入X及Y之值, 則會畫出X-Y關係的曲線圖。
>
>請問有何Demo程式或相關資料可供參考, Thank you !!

請問你的程式是什麼樣子的嗎?
單純輸入兩點畫一條"直"線??

因為我以前有寫過用GTK畫 一元n次方程式 的小tool
可是沒有完成 :p

若是只是簡單劃線,gtk.org 裡面的API refernece 就夠了
pay attention to GDK
作者 : edward_fang(edward_fang)
[ 貼文 24 | 人氣 4313 | 評價 0 | 評價/貼文 0 | 送出評價 8 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/6/1 上午 09:54:55
我的控制程式會一直抓值進來存成二維陣列, X軸為時間, y軸為抓取值, 之後用GTK畫圖程式將此二維陣列畫成曲線圖 !!
作者 : moocow(MooCow) 貼文超過200則
[ 貼文 379 | 人氣 4677 | 評價 760 | 評價/貼文 2.01 | 送出評價 18 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/6/1 上午 10:06:01
>我的控制程式會一直抓值進來存成二維陣列, X軸為時間, y軸為抓取值, 之後用GTK畫圖程式將此二維陣列畫成曲線圖 !!

阿∼ 這簡單
用gdk_draw_lines()
最容易了,exactly what you need

傳入一gdk point set,該function會把點連起來

check out the GDK API reference
作者 : edward_fang(edward_fang)
[ 貼文 24 | 人氣 4313 | 評價 0 | 評價/貼文 0 | 送出評價 8 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/6/1 上午 11:39:59
我在GNOME的網站有找到Draw_Line的說明, 但沒有Demo程式,還是不知如何撰寫 ?
Web Site : http://developer.gnome.org/doc/API/2.0/gdk/index.html

是否有一個實際的Demo程式可供參考呢 ?
作者 : moocow(MooCow) 貼文超過200則
[ 貼文 379 | 人氣 4677 | 評價 760 | 評價/貼文 2.01 | 送出評價 18 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/6/1 下午 01:33:58

>我在GNOME的網站有找到Draw_Line的說明, 但沒有Demo程式,還是不知如何撰寫 ?
>Web Site : http://developer.gnome.org/doc/API/2.0/gdk/index.html
>
>是否有一個實際的Demo程式可供參考呢 ?

你去錯地方了
http://gtk.org/api/

這沒有什麼好demo的吧?
有demo printf()的程式嗎? 只有範例
小小的一個API()不會有Demo程式(吧)

我之前寫的是分成module寫
所以貼出來會一大堆
而且用來解說這個API 有點太複雜
作者 : moocow(MooCow) 貼文超過200則
[ 貼文 379 | 人氣 4677 | 評價 760 | 評價/貼文 2.01 | 送出評價 18 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人edward_fang註記此篇回應為最佳解答 2005/6/1 下午 01:41:41
這樣好了,
#include <gtk/gtk.h>
GdkDrawable *drawable;

void redraw(GtkWidget *widget, GdkEvent *event, gpointer data)
{
     gdk_draw_drawable(widget->window, widget->style->fg_gc[GTK_WIDGET_STATE (widget)], drawable, 0, 0, 0, 0, -1, -1);
}

int main(int argc, char *argv[])
{
     GtkWidget *window;

     gtk_init( &argc, &argv);

     window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
     gtk_window_set_default_size(GTK_WINDOW(window), 600, 600);

     gtk_signal_connect(GTK_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL);
     gtk_signal_connect(GTK_OBJECT(window), "expose_event",G_CALLBACK(redraw), NULL);

     gtk_widget_show(window);
     GdkGC *black, *white;
     black = window->style->black_gc;
     white = window->style->white_gc;

     drawable = gdk_pixmap_new(window->window, window->allocation.width, window->allocation.height, -1);
     gdk_draw_rectangle(drawable, white, TRUE, 0, 0, -1, -1);

GdkPoint gdk_point_set[YOUR_ARRAY_SIZE];
/*
store/convert your points to gdk_point_set[]
*/
     // plot lines
     gdk_draw_lines(drawable, black_gc, gdk_point_set, YOUR_ARRAY_SIZE);

     gtk_main();

     return 0;
}
作者 : edward_fang(edward_fang)
[ 貼文 24 | 人氣 4313 | 評價 0 | 評價/貼文 0 | 送出評價 8 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/6/1 下午 05:00:07
Thank you very much , you really do a great help !!

This demo resolve my problem !!
作者 : edward_fang(edward_fang)
[ 貼文 24 | 人氣 4313 | 評價 0 | 評價/貼文 0 | 送出評價 8 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/6/1 下午 05:29:17
若在畫面開啟的情形下(不能關閉), 要動態加入描繪點, 要如何作呢 ?
作者 : moocow(MooCow) 貼文超過200則
[ 貼文 379 | 人氣 4677 | 評價 760 | 評價/貼文 2.01 | 送出評價 18 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/6/1 下午 10:12:04

>若在畫面開啟的情形下(不能關閉), 要動態加入描繪點, 要如何作呢 ?

唔∼
看要用什麼介面 從shell input? GUI? (這你自己決定啦)
either one, 只要update drawable就行了 (可能要先清空)
在有expose event的時候,window會自動被redraw
作者 : moocow(MooCow) 貼文超過200則
[ 貼文 379 | 人氣 4677 | 評價 760 | 評價/貼文 2.01 | 送出評價 18 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/6/1 下午 10:31:23
btw, black_gc 跟 white_gc 取得的方式 應該不是很好

我一直沒弄清楚 color在gtk下是怎麼樣
作者 : edward_fang(edward_fang)
[ 貼文 24 | 人氣 4313 | 評價 0 | 評價/貼文 0 | 送出評價 8 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/6/2 上午 12:59:38
1. 要如何才能發出"expose event"的訊號 ?

2. 在畫線上, 除了黑色之外, 還有其它的顏色可選擇嗎? 在哪個.h檔中有定義呢 ?

    Thank you !!
作者 : moocow(MooCow) 貼文超過200則
[ 貼文 379 | 人氣 4677 | 評價 760 | 評價/貼文 2.01 | 送出評價 18 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/6/2 上午 02:35:10

>1. 要如何才能發出'expose event'的訊號 ?
>
gdk_window_process_updates()
or
gdk_window_process_all_updates()

>2. 在畫線上, 除了黑色之外, 還有其它的顏色可選擇嗎? 在哪個.h檔中有定義呢 ?
>
> Thank you !!

這要請你自己弄清楚啦∼
因為我也不熟 :D

基本上,沒有預設的顏色
顏色要自己調
typedef struct {
  guint32 pixel;
  guint16 red;
  guint16 green;
  guint16 blue;
} GdkColor;

可是我在想要怎麼取得screen目前的depth (pixel)
研究一下吧
知道麻煩po一下 3q

參考一下
gdk_gc_set_fg_color ()
gdk_gc_set_rgb_fg_color ()
作者 : edward_fang(edward_fang)
[ 貼文 24 | 人氣 4313 | 評價 0 | 評價/貼文 0 | 送出評價 8 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/6/3 下午 06:33:05
我找到一個"GTK+ 2.0 教程"的中文版說明, 可以參考一下喔 !!

網址 : http://www.huihoo.com/gnu/gtk2-tut/book1.html
作者 : flylinux(ㄚ琪)
[ 貼文 61 | 人氣 23 | 評價 140 | 評價/貼文 2.3 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/3/18 上午 11:02:11
我有將簡體文轉譯成繁體文,歡迎蒞臨指教!
GTK+ 2.0 教學(http://job.achi.idv.tw/?p=718)
 板主 : maple-leaf
 > UNIX - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - UNIX - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
UNIX
1 Anderson 1130 
2 old cat 450 
3 maple-leaf 420 
4 MooCow 310 
5 又改暱稱 290 
6 青衫 200 
7 sazabi 200 
8 member one 200 
9 愛睏魚 190 
10 pail 160 
UNIX
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
0.078125