首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(gtk:4783):Gtk-关键**:gtk_image_set_from_pixbuf:断言'GTK_IS_IMAGE (图像)‘失败

(gtk:4783):Gtk-关键**:gtk_image_set_from_pixbuf:断言'GTK_IS_IMAGE (图像)‘失败
EN

Stack Overflow用户
提问于 2017-12-12 10:17:25
回答 1查看 1.4K关注 0票数 2

这是我的密码:

代码语言:javascript
复制
#include <gtk/gtk.h>
#include <gdk-pixbuf/gdk-pixbuf.h>

void destroy(void) {
    gtk_main_quit();
}


int main()
{
    GdkPixbuf* buf;
    GdkPixbuf* buf2;
    GError* err = NULL;
    int a=0, i=0, j=0;

    GtkWidget* window;
    GtkWidget *image =0;

    gtk_init (NULL,NULL);
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    buf = gdk_pixbuf_new_from_file("1.jpg", &err);
    buf2 = gdk_pixbuf_new_from_file("2.jpg", &err);

    for(i=0; i<10; i++)
    {
        if((i%2)==0)
        {
            gtk_image_set_from_pixbuf(GTK_IMAGE(image), buf);

            for(j=0; j<10000; j++)
            {}
        }
        else
        {
            gtk_image_set_from_pixbuf(GTK_IMAGE(image), buf2);
            for(j=0; j<10000; j++)
            {}
        }

        g_signal_connect(G_OBJECT (window), "destroy",
        G_CALLBACK (destroy), NULL);
        gtk_container_add(GTK_CONTAINER (window), image);
        gtk_widget_show_all(window);
        gtk_main();
    }

    return 0;
}

这就是结果:

代码语言:javascript
复制
(gtk:4783): Gtk-CRITICAL **: gtk_image_set_from_pixbuf: assertion 'GTK_IS_IMAGE (image)' failed

(gtk:4783): Gtk-CRITICAL **: gtk_container_add: assertion 'GTK_IS_WIDGET (widget)' failed
^C

我想要做的是:我有两个图像,还有一个循环,我想给奇数显示一个图像,对偶数显示另一个图像。但是这个简单的任务似乎很难做!请帮助我纠正我的code...thank你!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-12 14:38:40

您不需要仅仅为了更改图像就创建一个新的GtkImage。只需创建一个简单的GtkWindow,其中包含一个GtkImage。不,如果/否则就像你做的那样重复代码。然后加载要在GdkPixbuf中显示的图像,这是真正存储像素数据的objet。这是使用gdk_pixbuf_new_from_file完成的,并帮助您保留图像数据,以防再次显示它(缓存)。然后使用gtk_image_set_from_pixbuf请求GtkImage更改它显示的图像。

关于您的交互式循环:除非您每次被要求创建/破坏整个UI,否则不能这样做,这不是刷新。你需要做的是:

  • 询问用户要显示的所有帧的数量,然后创建窗口和内容并运行gtk主循环。
  • 或者更好的方法是使用使用g_timeout_add的超时值事件源来创建一个定期调用的回调,您可以在其中增加一个框架计数器。使用此计数器获取适当的图像,并调用gtk_image_set_from_pixbufgtk_image_set_from_file
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47770110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档