|
我想把现有的图像(比如:一个点)从作图区的左边移到右边,怎么实现?
我用过expose_event,通过画点 --> 用矩形填充 --> 再在新的位置画点... ... ,但是这样最终貌似只有最终的效果图(要么是矩形,要么是右侧的点),没有中间的动态过程。
向大家请教~~!
下面是一个画正弦曲线的例子,请教大家如何将画曲线的过程动态的显示出来呢?
- #include <gtk/gtk.h>
- #include <math.h>
- static gint expose_event(GtkWidget *widget, GdkEventExpose *event)
- {
- int i;
- GdkGC *gc;
- GdkColormap *colormap;
- GdkColor color;
-
- gc=gdk_gc_new(widget->window);
- colormap=gtk_widget_get_colormap(widget);
- gdk_color_parse("red",&color);
- gdk_color_alloc(colormap,&color);
- gdk_gc_set_foreground(gc,&color);
-
- /*画正弦曲线*/
-
- for(i=1;i<400;i++)
- {
-
- gdk_draw_line(widget->window,gc,i,200+100*sin(6.28*i/400),i+1,200+100*sin(6.28*(i+1)/400));
-
- }
- gdk_gc_unref(gc);
- return FALSE;
- }
- int main(int argc,char **argv)
- {
- GtkWidget *win_main, *draw_area;
-
- gtk_init(&argc,&argv);
-
- win_main=gtk_window_new(GTK_WINDOW_TOPLEVEL);
- gtk_widget_set_usize(win_main,400,400);
-
- draw_area = gtk_drawing_area_new();
- gtk_container_add(GTK_CONTAINER(win_main), draw_area);
- gtk_widget_show(draw_area);
-
- gtk_signal_connect(GTK_OBJECT(draw_area), "expose_event",
- (GtkSignalFunc) expose_event, NULL);
- gtk_signal_connect (GTK_OBJECT (win_main), "destroy",
- GTK_SIGNAL_FUNC (gtk_exit), NULL);
-
- gtk_widget_set_events(draw_area, GDK_EXPOSURE_MASK);
-
- gtk_widget_show(win_main);
-
- gtk_main();
- return 0;
- }
复制代码 |
|