Преобразование поверхности обратно в Pixbuf - PullRequest
0 голосов
/ 19 февраля 2020

У меня есть следующий код для рисования на Pixbuf:

private Pixbuf drawOnPixbuf(Pixbuf original)
{
    Surface surface = new ImageSurface(Format.Argb32, original.Width, original.Height);
    Context ctx = new Context(surface);
    CairoHelper.SetSourcePixbuf(ctx, original, 0, 0);

    // Draw on the surface here. Not shown since not relevant. 

    // Here, I want to convert the surface back to pixbuf.
    Pixbuf finishedPixbuf = ...;

    ctx.GetTarget().Dispose();
    ctx.Dispose();

    return finishedPixbuf;
}

Я не могу узнать, как преобразовать Surface обратно в Pixbuf.

1 Ответ

0 голосов
/ 22 февраля 2020

Функция, которую вы ищете, является частью Gdk:

cairo_surface_t *
gdk_cairo_surface_create_from_pixbuf (const GdkPixbuf *pixbuf,
                                      int scale,
                                      GdkWindow *for_window);

https://developer.gnome.org/gdk3/stable/gdk3-Cairo-Interaction.html#gdk -cairo-surface-create-from-pixbuf

В частности, gdk_cairo_surface_create_from_pixbuf(pixbuf, 1, NULL) должен делать то, что вы хотите. (Извините, я не знаю, как express это C#.)

...