On Fri, Mar 19, 2010 at 2:46 PM, Claudio Saavedra <csaave...@gnome.org>wrote:
> El vie, 19-03-2010 a las 13:34 +0800, Tolic Ma escribió: > > Hi,everyone! > > > > I want to draw something on GtkDrawingArea when I click a GtkButton,but I > > don't know how to do this... > > > > this is my code(it doesn't work...): > > > > *void click_button(void){ > > > > > > > gdk_draw_line(drawing_area,drawing_area->style->white_gc,x,y,width+x,height+y); > > > > } > > You shouldn't draw directly in your callback for the button. Instead, > you should call gtk_widget_queue_draw() to tell GTK+ to schedule a paint > of the widget. > > How will the widget be painted? GTK+ will tell your code that the widget > needs to be painted by emitting the GtkWidget::expose-event signal. > Then, you should connect to that signal and paint in your callback. > > Last but no least, don't forget to paint to the GdkWindow of the drawing > area, since that's the drawable. > > More or less (untested code, just for clarity): > > *void > click_button(GtkButton *button, gpointer data) > { > button_clicked = TRUE; > gtk_widget_queue_draw (drawing_area); > ... > } > > gboolean > expose_drawing_area (GtkWidget *area, > GdkExposureEvent *event, > gpointer data) > { > ... > if (button_clicked) { > gdk_draw_line(drawing_area->window, > drawing_area->style->white_gc,x,y,width+x,height+y); > } > ... > } > > int main(int argc,char *argv[]){ > ... > g_signal_connect(button,"clicked",G_CALLBACK(click_button),NULL); > > g_signal_connect(drawing_area,"expose-event",G_CALLBACK(expose_drawing_area),NULL); > ... > } > > > Claudio > > -- > Claudio Saavedra <csaave...@gnome.org> > > _______________________________________________ > gtk-app-devel-list mailing list > gtk-app-devel-list@gnome.org > http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list > Thank you! I solved my problem by following your instruction. Thank you very much!!! _______________________________________________ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list