<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # PyCairo 中的圖像 > 原文: [https://zetcode.com/gfx/pycaiimg/](https://zetcode.com/gfx/pycaiimg/) 在 PyCairo 教程的這一部分中,我們將討論圖像。 我們將展示如何在 GTK 窗口上顯示 PNG 和 JPEG 圖像。 我們還將在圖像上繪制一些文本。 ## 顯示 PNG 圖像 在第一個示例中,我們將顯示一個 PNG 圖像。 ```py #!/usr/bin/python ''' ZetCode PyCairo tutorial This program shows how to draw an image on a GTK window in PyCairo. author: Jan Bodnar website: zetcode.com last edited: August 2012 ''' from gi.repository import Gtk import cairo class Example(Gtk.Window): def __init__(self): super(Example, self).__init__() self.init_ui() self.load_image() def init_ui(self): darea = Gtk.DrawingArea() darea.connect("draw", self.on_draw) self.add(darea) self.set_title("Image") self.resize(300, 170) self.set_position(Gtk.WindowPosition.CENTER) self.connect("delete-event", Gtk.main_quit) self.show_all() def load_image(self): self.ims = cairo.ImageSurface.create_from_png("stmichaelschurch.png") def on_draw(self, wid, cr): cr.set_source_surface(self.ims, 10, 10) cr.paint() def main(): app = Example() Gtk.main() if __name__ == "__main__": main() ``` 該示例顯示圖像。 ```py self.ims = cairo.ImageSurface.create_from_png("stmichaelschurch.png") ``` 我們從 PNG 圖像創建圖像表面。 ```py cr.set_source_surface(self.ims, 10, 10) ``` 我們為先前創建的圖像表面設置了繪畫源。 ```py cr.paint() ``` 我們在窗口上繪制源。 ![Showing an image](https://img.kancloud.cn/69/ad/69adde8ea0870e049c8d5abeb4a9b026_302x196.jpg) 圖:顯示圖像 ## 顯示 JPEG 圖像 PyCairo 僅對 PNG 圖像提供內置支持。 可以通過`GdkPixbuf.Pixbuf`對象顯示其他圖像。 它是用于處理圖像的 GTK 對象。 ```py #!/usr/bin/python ''' ZetCode PyCairo tutorial This program shows how to draw an image on a GTK window in PyCairo. author: Jan Bodnar website: zetcode.com last edited: August 2012 ''' from gi.repository import Gtk, Gdk, GdkPixbuf import cairo class Example(Gtk.Window): def __init__(self): super(Example, self).__init__() self.init_ui() self.load_image() def init_ui(self): darea = Gtk.DrawingArea() darea.connect("draw", self.on_draw) self.add(darea) self.set_title("Image") self.resize(300, 170) self.set_position(Gtk.WindowPosition.CENTER) self.connect("delete-event", Gtk.main_quit) self.show_all() def load_image(self): self.pb = GdkPixbuf.Pixbuf.new_from_file("stmichaelschurch.jpg") def on_draw(self, wid, cr): Gdk.cairo_set_source_pixbuf(cr, self.pb, 5, 5) cr.paint() def main(): app = Example() Gtk.main() if __name__ == "__main__": main() ``` 在此示例中,我們在窗口上顯示 JPEG 圖像。 ```py from gi.repository import Gtk, Gdk, GdkPixbuf ``` 除了`Gtk`,我們還將需要`Gdk`和`GdkPixbuf`模塊。 ```py self.pb = GdkPixbuf.Pixbuf.new_from_file("stmichaelschurch.jpg") ``` 我們從 JPEG 文件創建一個`GdkPixbuf.Pixbuf`。 ```py Gdk.cairo_set_source_pixbuf(cr, self.pb, 5, 5) cr.paint() ``` `Gdk.cairo_set_source_pixbuf()`方法將`pixbuf`設置為繪畫源。 ## 水印 在圖像上繪制信息是很常見的。 寫在圖像上的文本稱為水印。 水印用于識別圖像。 它們可能是版權聲明或圖像創建時間。 ```py #!/usr/bin/python ''' ZetCode PyCairo tutorial This program draws a watermark on an image. author: Jan Bodnar website: zetcode.com last edited: August 2012 ''' from gi.repository import Gtk import cairo class Example(Gtk.Window): def __init__(self): super(Example, self).__init__() self.init_ui() self.load_image() self.draw_mark() def init_ui(self): darea = Gtk.DrawingArea() darea.connect("draw", self.on_draw) self.add(darea) self.set_title("Watermark") self.resize(350, 250) self.set_position(Gtk.WindowPosition.CENTER) self.connect("delete-event", Gtk.main_quit) self.show_all() def load_image(self): self.ims = cairo.ImageSurface.create_from_png("beckov.png") def draw_mark(self): cr = cairo.Context(self.ims) cr.set_font_size(11) cr.set_source_rgb(0.9 , 0.9 , 0.9) cr.move_to(20 , 30) cr.show_text(" Beckov 2012 , (c) Jan Bodnar ") cr.stroke() def on_draw(self, wid, cr): cr.set_source_surface(self.ims, 10, 10) cr.paint() def main(): app = Example() Gtk.main() if __name__ == "__main__": main() ``` 我們在圖像上繪制版權信息。 ```py def load_image(self): self.ims = cairo.ImageSurface.create_from_png("beckov.png") ``` 在`load_image()`方法中,我們從 PNG 圖像創建圖像表面。 ```py def draw_mark(self): cr = cairo.Context(self.ims) ... ``` 在`draw_mark()`方法中,我們在圖像上繪制版權信息。 首先,我們從圖像表面創建一個繪圖上下文。 ```py cr.set_font_size(11) cr.set_source_rgb(0.9 , 0.9 , 0.9) cr.move_to(20 , 30) cr.show_text(" Beckov 2012 , (c) Jan Bodnar ") cr.stroke() ``` 然后,我們用白色繪制一個小的文本。 ```py def on_draw(self, wid, cr): cr.set_source_surface(self.ims, 10, 10) cr.paint() ``` 最后,在窗口上繪制圖像表面。 ![Watermark](https://img.kancloud.cn/f6/82/f6825e211bb41011fbe7c9db7a5bb236_352x276.jpg) 圖:水印 本章介紹了 PyCairo 中的圖像。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看