|

楼主 |
发表于 2004-12-3 17:19:04
|
显示全部楼层
我查看了gtk-demo的例程:
- do_pixbufs (void)
- {
- ...
- da = gtk_drawing_area_new ();
- g_signal_connect (da, "expose_event",
- G_CALLBACK (expose_cb), NULL);
- gtk_container_add (GTK_CONTAINER (window), da);
- ...
- }
- static gint expose_cb (GtkWidget *widget,
- GdkEventExpose *event,
- gpointer data)
- {
- guchar *pixels;
- int rowstride;
- rowstride = gdk_pixbuf_get_rowstride (frame);
- pixels = gdk_pixbuf_get_pixels (frame) + rowstride * event->area.y + event->area.x * 3;
- gdk_draw_rgb_image_dithalign (widget->window,
- widget->style->black_gc,
- event->area.x, event->area.y,
- event->area.width, event->area.height,
- GDK_RGB_DITHER_NORMAL,
- pixels, rowstride,
- event->area.x, event->area.y);
- return TRUE;
- }
复制代码
gdk_draw_rgb_image_dithalign()的原型是:
- void gdk_draw_rgb_image_dithalign(GdkDrawable *drawable,
- GdkGc *gc, gint x, gint y, gint width, gint height,
- GdkRgbDither dith, guchar *rgb_buf, gint rowstride,
- gint xdith, gint ydith);
复制代码
和gdk_pixbuf_render_to_drawable_alpha()一样,使用GdkDrawable, 但在调用的时候,不是使用widget吗?但我使用如下的方法却不行:
- img_drawing = gtk_drawing_area_new ();
- ...
- gdk_pixbuf_render_to_drawable_alpha(img_buf,
- GTK_WIDGET(img_drawing)->window,
- 0, 0, 0, 0, width, height,
- GDK_PIXBUF_ALPHA_BILEVEL, 128,
- GDK_RGB_DITHER_NORMAL, 0, 0);
复制代码
我想直接cast过来就可以了吧,却不行。难道一定要写在回调函数中才行吗? |
|