gpt4 book ai didi

gtk - 如何在 gtk-rs 中的 cairo::Context 上渲染图像

转载 作者:行者123 更新时间:2023-11-29 08:00:29 30 4
gpt4 key购买 nike

我正在尝试在 gtk-rs 中的 DrawingArea 上渲染图像 (gif/png)。我可以使用 Pixbuf 读取图像文件:

Pixbuf::new_from_file("/path/to/img.gif")

但我找不到将 Pixbuf 渲染到 cairo::Context 中的方法。我注意到 gdk::prelude::ContextExtset_source_pixbuf():

https://docs.rs/crate/gdk/0.1.4/source/src/cairo_interaction.rs

所以我试着用这个:

extern crate gdk;
use gdk::prelude::*;

...

drawingArea.connect_draw(move |widget, context| {
context.set_source_pixbuf(&ws.pix, 0f64, 0f64);
context.stroke();
return Inhibit(false);
});

但是没有渲染任何东西。 ContextExt 似乎没有实现(它似乎将 null 指定给 gdk_cairo_set_source_pixbuf 的第二个参数)?

fn set_source_pixbuf(&self, pixbuf: &Pixbuf, x: f64, y: f64) {
unsafe {
ffi::gdk_cairo_set_source_pixbuf(self.to_glib_none().0, pixbuf.to_glib_none().0, x, y);
}
}

是否有任何其他方法可以在 DrawingArea 上渲染图像?

最佳答案

我需要使用 Context.paint() 而不是 Context.stroke():

context.set_source_pixbuf(&ws.pix, 0f64, 0f64);
context.paint(); // need to call paint() instead of stroke().
return Inhibit(false);

关于gtk - 如何在 gtk-rs 中的 cairo::Context 上渲染图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41610274/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com