Hi Mahesh,

Le 04/10/2013 07:41, Mahesh Chaudhari a écrit :
> Hi List,
> I have drawn five circles in GtkDrawingArea as below :
>  
> #include <gtk/gtk.h>
> #include <cairo.h>
> #include<math.h>
> 
>     GtkWidget* window;
>     GtkWidget* darea;
> static gboolean on_expose_event(GtkWidget *widget, GdkEventExpose *event, 
> gpointer data)
>     {
>         cairo_t *cr;
>         cr = gdk_cairo_create(darea->window);
>         cairo_arc(cr,50,60,20,0,2*M_PI);
>         cairo_arc(cr,110,60,20,0,2*M_PI);
>         cairo_arc(cr,170,60,20,0,2*M_PI);
>         cairo_arc(cr,230,60,20,0,2*M_PI);
>         cairo_arc(cr,300,60,20,0,2*M_PI);
>         cairo_set_source_rgba (cr, 0.5, 0, 0, 0.5);
>         cairo_fill(cr);

You need to return a boolean here, see
https://developer.gnome.org/gtk2/stable/GtkWidget.html#GtkWidget-expose-event

You also should destroy the cairo_t you created at the start of the
function using cairo_destroy().

>     }
> int main(int argc, char **argv)
>     {
>         gtk_init(&argc, &argv);
>         window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
>         gtk_window_set_default_size(GTK_WINDOW(window), 400, 100);
>         darea = gtk_drawing_area_new();
>         gtk_container_add(GTK_CONTAINER(window), darea);
>         g_signal_connect(darea, "expose-event",
>           G_CALLBACK(on_expose_event), NULL);
> 
>         gtk_widget_show_all(window);
>         gtk_main();
>         return 0;
>     }
>  
> I want to put label(text) above each circle,

Use Pango and its Cairo rendering capabilities:
https://developer.gnome.org/pango/stable/pango-Cairo-Rendering.html

A very basic example could be:

        PangoLayout *l = pango_cairo_create_layout (cr);
        PangoFontDescription *font = pango_font_description_from_string ("sans
42");
        pango_layout_set_text (l, "hello world", -1);
        pango_layout_set_font_description (l, font);
        pango_font_description_free (font);
        pango_layout_set_width (l, width_you_want * PANGO_SCALE);
        pango_layout_set_height (l, height_you_want * PANGO_SCALE);
        pango_cairo_show_layout (cr, l);
        g_object_unref (l);

Check the Pango docs for more details and features
https://developer.gnome.org/pango/stable/index.html

> Also colour should be change after few seconds

Put a timeout (g_timeout_add()) and when it fires change the color and
queue a redraw (gtk_widget_queue_draw()).

> How can I do this ? I have to use CentOS-5.3 which has gtk+-2.10.0 
> _______________________________________________
> gtk-app-devel-list mailing list
> gtk-app-devel-list@gnome.org
> https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
> 

_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to