请教关于gdk_draw_pixbuf
写了一段代码如下:
#include <stdlib.h>
guchar data[] = {0x42,0x4d,0x38,0x03};
void close_application( GtkWidget *widget, GdkEvent *event, gpointer data )
{
gtk_main_quit();
}
int main (int argc, char *argv[])
{
GtkWidget *window;
GdkPixbuf *pixbuf;
GtkWidget *draw_able;
int i;
gtk_init (&argc, &argv);
window = gtk_window_new( GTK_WINDOW_TOPLEVEL);
gtk_signal_connect (GTK_OBJECT (window), "delete_event",
GTK_SIGNAL_FUNC (close_application), NULL);
draw_able = gtk_drawing_area_new ();
gtk_widget_set_size_request (draw_able, 320, 240);
gtk_container_add (GTK_CONTAINER (window), draw_able);
pixbuf = gdk_pixbuf_new_from_data ((guchar* )data, GDK_COLORSPACE_RGB, FALSE,8,640,480, 640*3,0,0);
gtk_widget_realize(draw_able);
gdk_draw_pixbuf (GTK_WIDGET (draw_able)->window, NULL,pixbuf,0,0,0,0, 320,240, GDK_RGB_DITHER_NORMAL, 0, 0);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
程序运行什么都显示不出来,不知道是何原因,请高手指教!谢谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你对gdk_draw_pixbuf函数的理解有问题,这个函数只能在窗口初始化以后才能真正的把图像画到屏幕上。
具体的修改方法是你应该注册draw_able的expose函数,在expose函数里面调用gdk_draw_pixbuf来画图像,
简单的示例:
g_signal_connect (G_OBJECT (draw_able),
"expose_event",
my_draw_able_expose,
NULL);
void my_draw_able_expose (GtkWidget *w, GdkEventExpose *e, gpointer data)
{
gdk_draw_pixbuf (GTK_WIDGET (w)->window, NULL,pixbuf,0,0,0,0, 320,240, GDK_RGB_DITHER_NORMAL, 0, 0);
}