读书人

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

发布时间: 2013-04-20 19:43:01 作者: rapoo

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

读书人网 >UNIXLINUX

热点推荐