【问题标题】:Draw a shape on top of an image using Gtk and pycairo使用 Gtk 和 pycairo 在图像上绘制形状
【发布时间】:2019-03-20 06:33:28
【问题描述】:

我最近开始使用 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()

有没有什么办法可以让图片顶部的形状?

很抱歉提出这么愚蠢的问题。我只是新手。

【问题讨论】:

    标签: python gtk cairo


    【解决方案1】:

    为什么不直接在图像的顶部而不是在图像后面绘制形状?

    因此,与其先绘制形状然后绘制图像,不如反过来做。先画图,再画形状。

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

    【讨论】:

    • 对不起,但这似乎对我不起作用。还有其他解决方案吗?
    • 哦,对了。必须改回黑色源。我编辑了我的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    • 1970-01-01
    • 2012-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多