问题描述
是否可以在图标视图中显示 GIF?
我正在使用 GTK rust 并有一个带有字符串和 Pixbuf 列的图标视图,这适用于显示图像和一些文本。
是否可以用 PixbufAnimation 替换 Image Pixbuf 来显示 gif?
Gtk-CRITICAL **: 20:04:29.359: gtk_icon_view_set_pixbuf_column: assertion 'column_type == GDK_TYPE_PIXBUF' Failed
但我找不到动画的列类型。
我正在使用 gtk rust,所以这是我的代码部分,处理 iconview 示例:
// SNIP //
// And finally set text column and pixbuf column using enum
icon_view.set_text_column(0);
icon_view.set_pixbuf_column(1);
icon_view.set_pixbuf_column(2);}
// enum so we can have gifs and static images be stored
enum PixBuffer {
Pix(Pixbuf),Anim(PixbufAnimation),}
fn create_list_store_model() -> gtk::ListStore {
// Initialize an array of column types for ListStore object. Here we say that the first item
let col_types: [glib::Type; 3] = [glib::Type::String,gdk_pixbuf::Pixbuf::static_type(),gdk_pixbuf::PixbufAnimation::static_type()]; //gdk_pixbuf::PixbufAnimation::static_type()
let view_model = gtk::ListStore::new(&col_types);
let titles = vec!("Update","icon");
let gifs = vec!(PixBuffer::Anim(PixbufAnimation::from_file("pathtogif.gif").unwrap()),PixBuffer::Pix(Pixbuf::from_file("pathtoimage.png").unwrap()));
// let col_indices: [u32; 3] = [0,1,2];
for (title,buffer) in titles.iter().zip(gifs) {
match buffer {
PixBuffer::Pix(pic) => {
view_model.insert_with_values(
None,&[0,1],&[&title,&pic]);
},PixBuffer::Anim(gif) => {
view_model.insert_with_values(
None,2],&Image::from_animation(&gif)]);
},}
// view_model.set(&view_model.append(),&col_indices,&gif,&otr]);
}
对于那个代码 2 项出现在 iconview 中标记为“更新”和“图标”,更新只显示文本而“图标”显示图像。
我看不到动画的任何列类型,所以可能是不可能的
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)