gtk - Cairo.ImageSurface 到 Gdk.Pixbuf?

标签 gtk cairo gtk2 gdk pixbuf

尝试从 ImageSurface 创建 Pixbuf,但我得到的只是黑色像素。有什么想法吗?

Cairo.ImageSurface surface = mysurface;
int w = surface.Width;
int h = surface.Height;
Gdk.Pixmap pixmap = new Gdk.Pixmap(null, w, h, 24);
using (Cairo.Context cr = Gdk.CairoHelper.Create(pixmap)) {
     cr.Operator = Cairo.Operator.Source;
     cr.SetSource(surface);
     cr.Paint();
}
_pixbuf = Gdk.Pixbuf.FromDrawable(pixmap, Gdk.Colormap.System, 0, 0, 0, 0, w, h);

最佳答案

如果您使用的是 Gdk 3,那么您很幸运,因为它应该可以工作:

my_pixbuf = Gdk.pixbuf_get_from_surface (surface, x, y, w, h);

关于gtk - Cairo.ImageSurface 到 Gdk.Pixbuf?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21928901/

相关文章:

c - 服务器未通过 GTK+ 中的客户端 GUI 接收到文本消息

c - 如何使用 `enum` 类型设置小部件属性,如 `GtkAttachOptions` ?我正在尝试模拟 `gtk_widget_set_vexpand` 以在 `gtk2` 上工作

mysql - 创建 gtk ListView 时出错

python - PyQt 和 PyCairo

python - Python 中布局文本的最佳模块

python - 在 wxpython 中使用 cairo 绘图

ubuntu - GTK 应用程序显示 "green"太暗

c++ - 在 GTK+ 中找不到 -llintl

c - 为什么 gcc 找不到正确版本的 Gtk 和 Gdk?

macos - 安装 Cairo R 包时出错