首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

gtk画曲线的工具,该怎么解决

2013-04-20 
gtk画曲线的工具本人想在gtk下画曲线,显示数据库查询出来的数据(横坐标是时间,拉框可调节范围),看了cairo

gtk画曲线的工具
本人想在gtk下画曲线,显示数据库查询出来的数据(横坐标是时间,拉框可调节范围),看了cairo感觉不是很合适。
不知道有没有什么比较合适的工具。(语言c,桌面gnome)
[解决办法]
直接用gtk画吧,看看这篇介绍
http://blog.sina.com.cn/s/blog_5163b2980100dqgs.html
[解决办法]
头文件 #include <gtk/gtk.h>
用到的控件:GdkGC、GdkDrawable、GdkColor
用到的函数:gdk_draw_line(画线)、gdk_draw_rectangle(画矩形)、gdk_draw_arc(画曲线)

具体参数,楼主可以参照GTK+2.0的manual,我在我的资料里有上传帮助文档
[解决办法]

/* COMPILE USING:  gcc -Wextra -o cairo1 `pkg-config --cflags --libs gtk+-3.0` cairo1.c */
#include <gtk/gtk.h>

#define WINDOW_WIDTH  300
#define WINDOW_HEIGHT 300

static gboolean draw_cb(GtkWidget *widget, cairo_t *cr, gpointer data)
{   
   /* Connect the GtkDrawingArea to the current cairo context */
   cr = gdk_cairo_create( gtk_widget_get_window (widget));

   /* Set color for background */
   cairo_set_source_rgb(cr, 1, 1, 1);
   /* fill in the background color*/
   cairo_paint(cr);
      
   /* set color for rectangle */
   cairo_set_source_rgb(cr, 0.42, 0.65, 0.80);
   /* set the line width */
   cairo_set_line_width(cr,6); 
   /* draw the rectangle's path beginning at 3,3 */
   cairo_rectangle (cr, 3, 3, 100, 100); 
   /* stroke the rectangle's path with the chosen color so it's actually visible */
   cairo_stroke(cr);

   /* draw circle */
   cairo_set_source_rgb(cr, 0.17, 0.63, 0.12);
   cairo_set_line_width(cr,2);
   cairo_arc(cr, 150, 210, 20, 0, 2*G_PI);
   cairo_stroke(cr);

   /* draw horizontal line */
   cairo_set_source_rgb(cr, 0.77, 0.16, 0.13);
   cairo_set_line_width(cr, 6);
   cairo_move_to(cr, 80,160);
   cairo_line_to(cr, 200, 160);
   cairo_stroke(cr);

   /* free cr and all associated resources */
   cairo_destroy(cr);

   return FALSE;
}

int main (int argc, char *argv[])
{
   gtk_init (&argc, &argv);

    GtkWidget *window;
   GtkWidget *da;

   window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
   g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);

   da = gtk_drawing_area_new();
   gtk_widget_set_size_request (da, WINDOW_WIDTH, WINDOW_HEIGHT);
   g_signal_connect (da, "draw", G_CALLBACK(draw_cb),  NULL);



   gtk_container_add (GTK_CONTAINER (window), da);
   gtk_widget_show(da);
   gtk_widget_show (window);

   gtk_main ();
   return 0;
}


http://www.gtkforums.com/viewtopic.php?f=3&t=988&p=195286=Drawing%20with%20Cairo%20in%20GTK3#p195286

热点排行