将gtk_drawing_area或Cairo模式的内容保存到磁盘上的映像

时间:2015-03-12 06:15:10

标签: c gtk cairo

如何将gtk_drawing_area或cairo上下文的内容保存到磁盘?

类似于这个(Python)问题:Save the contents of a Gtk.DrawingArea or Cairo pattern to an image on disk

但在C。

1 个答案:

答案 0 :(得分:1)

您链接的Python代码似乎与C程序的行为不同;你只需要查找等效的C方法,比如gdk_pixbuf_savev()

但是,因为你的原始问题是cairo pattern *,我认为你推断出自从你编写GtkDrawingArea draw信号处理程序的实现以来,你可以重用该代码来绘制图像。你是对的。

在这种情况下,您首先要创建an image surface,然后再创建a cairo_t from that surface。将其传递给绘图函数,然后you can save the surface to a PNGHere's an example (from the Pango documentation).

当然,这假设你的draw处理程序是这样写的,它不使用GtkDrawingArea或data参数。如果是,则需要将实际绘图逻辑拆分出来。无论哪种方式,希望有所帮助!

*我假设你的意思是cairo context或cairo surface。模式只是绘图操作绘制的定义;将其保存到图像有点无意义。 (你可以用图像创建模式,是的,但这对于保存来说仍然没有多大意义。)