请教关于gdk_draw_pixbuf

发布于 2022-07-23 10:53:18 字数 1894 浏览 6 评论 1

写了一段代码如下:
#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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

皓月长歌 2022-07-25 20:22:52

你对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);
}

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文