Gtk上的cairo(一)——drawarea的简单应用
#include <gtk/gtk.h> /*事件draw的回调函数*/ gboolean draw_callback (GtkWidget *widget, cairo_t *cr, gpointer data) { guint width, height; //获得draw_area的宽度 width = gtk_widget_get_allocated_width (widget); //获得draw_area的高度 height = gtk_widget_get_allocated_height (widget); /*绘制一个圆*/ cairo_arc (cr, width / 2.0, height / 2.0, MIN (width, height) / 2.0, 0, 2 * G_PI); /*设置颜色为红色*/ cairo_set_source_rgb (cr, 1, 0, 0); /*描绘路径,即给cr涂上设置好的颜色*/ cairo_stroke(cr); return FALSE; } int main (int argc, char *argv[]) { GtkWidget *window = NULL; GtkWidget *drawing_area = NULL; gtk_init (&argc, &argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); drawing_area = gtk_drawing_area_new (); gtk_widget_set_size_request (drawing_area, 100, 100); /*连接信号和回调函数*/ g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); g_signal_connect (G_OBJECT (drawing_area), "draw", G_CALLBACK (draw_callback), NULL); /*把drawing_area放入window中*/ gtk_container_add (GTK_CONTAINER (window), drawing_area); /*显示控件*/ gtk_widget_show (drawing_area); gtk_widget_show (window); gtk_main(); return 0; }