Питон код, который вы связаны, кажется, не делать ничего другого от того, что программа 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 PNG. Here's an example (from the Pango documentation).
Конечно, это предполагает, что draw
обработчик написан таким образом, что он не использует ни GtkDrawingArea или параметр data
. Если это так, вам нужно разделить логику рисования. В любом случае, надеюсь, что это поможет!
* Я предполагаю, что вы имели в виду cairo context или cairo surface. Шаблон - это просто определение того, как рисуется операция рисования; сохранение этого изображения несколько бессмысленно. (Вы можете создавать шаблоны из изображений, да, но это все еще не означает многого для сохранения.)
OP, пожалуйста, ответьте на этот вопрос. Верно. – oldtechaa