C# 在mono上将图像加载到cairo

C# 在mono上将图像加载到cairo,c#,image,mono,gtk#,cairo,C#,Image,Mono,Gtk#,Cairo,我四处寻找使用库的Mono(C#)绑定将png加载到Cairo中的方法,但最接近的是在库的C绑定中使用了类似于Cairo\u image\u surface\u create\u from\u png()的东西。然而,在库的C#绑定中,我在Cairo.ImageSurface.*下没有看到任何有用的静态成员。某个地方有一篇老文章提到绑定不完整,是这样吗?目前,我正在使用Gdk.Image.Pixbuf加载内存(嵌入式)图像,但看到Gtk+已经转移到Cairo和Windows。Mono中的表单正在

我四处寻找使用库的Mono(C#)绑定将png加载到Cairo中的方法,但最接近的是在库的C绑定中使用了类似于
Cairo\u image\u surface\u create\u from\u png()
的东西。然而,在库的C#绑定中,我在
Cairo.ImageSurface.*
下没有看到任何有用的静态成员。某个地方有一篇老文章提到绑定不完整,是这样吗?目前,我正在使用
Gdk.Image.Pixbuf
加载内存(嵌入式)图像,但看到Gtk+已经转移到Cairo和Windows。Mono中的表单正在使用Cairo,我认为Cairo的C#绑定至少已经完成到足以包含图像加载的程度。我可能遗漏了什么?

我最近做过这件事。您需要将图像加载到Cairo曲面中:-

var icon = new ImageSurface( pngfile );
然后可以使用该方法渲染它:

icon.Show( ctx, x, y );

在上查看更多有用的内容。

谢谢。我查看了ImageSurface类的构造函数,它们似乎提供了从byte[]创建曲面的功能,因为我的png是作为资源嵌入的(并且像流对象一样读取)。下一步我会尝试,但构造函数似乎需要宽度/高度,这应该在png的元数据中,我怀疑它可能无法像基于文件系统的png解析那样工作。除了在文件系统中循环外,还有没有其他方法可以在不首先通过gdk等解析的情况下将嵌入式png嵌入到cairo曲面中?e、 g.直接通过开罗,还是尽可能干净?@比尔,据我所知不是这样。不过,您可能可以从资源流中找到png的维度。