Нарисуйте фигуру поверх изображения, используя Gtk и pycairo - PullRequest
0 голосов
/ 20 марта 2019

Я недавно начал использовать glade, python gtk + и cairo для создания приложений с графическим интерфейсом. Я создал виджет DrawingArea, в котором я использовал pixbuf для рисования изображения. Однако, когда я пытаюсь нарисовать фигуры на изображении, фигуры рисуются позади изображения.

def on_draw(self, wid, cr):
    #cr.rectangle(1500, 300, 400, 800)
    #cr.stroke()
    self.pb = GdkPixbuf.Pixbuf.new_from_file_at_scale("image2.jpg", 1920, 1080, True)
    Gdk.cairo_set_source_pixbuf(cr, self.pb, 0, 0)
    cr.paint()

Можно ли каким-либо образом получить фигуры поверх изображения?

Извините за такой глупый вопрос. Я просто новичок в этом.

1 Ответ

0 голосов
/ 20 марта 2019

Почему бы вам просто не нарисовать фигуру поверх изображения, а не за ней?

Итак, вместо того, чтобы сначала нарисовать фигуру, а затем нарисовать изображение, сделайте все наоборот. Сначала нарисуйте изображение, а затем форму.

def on_draw(self, wid, cr):
    self.pb = GdkPixbuf.Pixbuf.new_from_file_at_scale("image2.jpg", 1920, 1080, True)
    Gdk.cairo_set_source_pixbuf(cr, self.pb, 0, 0)
    cr.paint()
    cr.set_source_rgb(0, 0, 0)
    cr.rectangle(1500, 300, 400, 800)
    cr.stroke()
...