使用Gtk和pycairo在图像顶部绘制形状

时间:2019-03-20 06:33:28

标签: python gtk cairo

我最近开始使用Glade,python gtk +和cairo来构建GUI应用程序。我构造了一个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 :(得分:0)

为什么不只是在图像的顶部而不是在图像的顶部绘制形状?

因此,与其相反,首先绘制形状,然后绘制图像,反之亦然。首先绘制图像,然后绘制形状。

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()