<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/pycairo/backends/](https://zetcode.com/gfx/pycairo/backends/) PyCairo 支持各種后端。 后端是可以顯示 PyCairo 產生的圖形的地方。 我們使用 PyCairo 創建 PNG 圖像,PDF 文件,SVG 文件,然后在 GTK 窗口上繪制。 ## PNG 圖像 在第一個示例中,我們創建一個 PNG 圖像。 `pngimage.py` ```py #!/usr/bin/python ''' ZetCode PyCairo tutorial This program uses PyCairo to produce a PNG image. Author: Jan Bodnar Website: zetcode.com Last edited: April 2016 ''' import cairo def main(): ims = cairo.ImageSurface(cairo.FORMAT_ARGB32, 390, 60) cr = cairo.Context(ims) cr.set_source_rgb(0, 0, 0) cr.select_font_face("Sans", cairo.FONT_SLANT_NORMAL, cairo.FONT_WEIGHT_NORMAL) cr.set_font_size(40) cr.move_to(10, 50) cr.show_text("Disziplin ist Macht.") ims.write_to_png("image.png") if __name__ == "__main__": main() ``` 此示例是一個小型控制臺應用,可創建 PNG 圖像。 ```py import cairo ``` 我們導入 PyCairo 模塊。 ```py ims = cairo.ImageSurface(cairo.FORMAT_ARGB32, 390, 60) cr = cairo.Context(ims) ``` 我們創建一個曲面,并從該曲面創建一個 Cairo 上下文。 表面是 390x60 像素的圖像。 ```py cr.set_source_rgb(0, 0, 0) ``` 我們用黑色墨水繪制文本。 墨水通過`set_source_rgb()`方法指定。 ```py cr.select_font_face("Sans", cairo.FONT_SLANT_NORMAL, cairo.FONT_WEIGHT_NORMAL) cr.set_font_size(40) ``` 我們通過`select_font_face()`方法選擇一種字體類型,并通過`set_font_size()`方法設置字體大小。 ```py cr.move_to(10, 50) cr.show_text("Disziplin ist Macht.") ``` 我們將圖像內的位置移至`x = 10.0`,`y = 50.0`并繪制文本。 ```py ims.write_to_png("image.png") ``` `write_to_png()`方法將表面的內容寫入 PNG 圖像。 ![PNG image in Eye of Gnome](https://img.kancloud.cn/8c/28/8c2819f0d102f443e42f3084edaf3afb_442x376.jpg) 圖:Gnome之眼中的 PNG 圖像 ## PDF 文件 在第二個示例中,我們創建一個簡單的 PDF 文件。 `pdffile.py` ```py #!/usr/bin/python ''' ZetCode PyCairo tutorial This program uses PyCairo to produce a PDF image. Author: Jan Bodnar Website: zetcode.com Last edited: April 2016 ''' import cairo def main(): ps = cairo.PDFSurface("pdffile.pdf", 504, 648) cr = cairo.Context(ps) cr.set_source_rgb(0, 0, 0) cr.select_font_face("Sans", cairo.FONT_SLANT_NORMAL, cairo.FONT_WEIGHT_NORMAL) cr.set_font_size(40) cr.move_to(10, 50) cr.show_text("Disziplin ist Macht.") cr.show_page() if __name__ == "__main__": main() ``` 我們必須在 PDF 查看器中打開 PDF 文件。 Linux 用戶可以使用 KPDF 或 Evince 查看器。 ```py ps = cairo.PDFSurface("pdffile.pdf", 504, 648) ``` 要渲染 PDF 文件,我們必須使用`cairo.PDFSurface`對象創建 PDF 曲面。 PDF 文件的大小以磅為單位指定,這是排版的標準。 ```py cr.show_page() ``` `show_page()`完成 PDF 文件的渲染。 ![PDF file in Evince](https://img.kancloud.cn/2d/fb/2dfb5e7e5176bfa52ece04cecdb37a21_542x196.jpg) 圖:Evince 中的 PDF 文件 ## SVG 文件 下一個示例創建一個簡單的 SVG(可縮放矢量圖形)文件。 SVG 文件是基于 XML 的文件格式。 `svgfile.py` ```py #!/usr/bin/python ''' ZetCode PyCairo tutorial This program uses PyCairo to produce a SVG file. Author: Jan Bodnar Website: zetcode.com Last edited: April 2016 ''' import cairo def main(): ps = cairo.SVGSurface("svgfile.svg", 390, 60) cr = cairo.Context(ps) cr.set_source_rgb(0, 0, 0) cr.select_font_face("Sans", cairo.FONT_SLANT_NORMAL, cairo.FONT_WEIGHT_NORMAL) cr.set_font_size(40) cr.move_to(10, 50) cr.show_text("Disziplin ist Macht.") cr.show_page() if __name__ == "__main__": main() ``` 我們可以使用網絡瀏覽器(例如 Google Chrome)或矢量繪圖程序(例如 Inkscape)打開 SVG 文件。 ```py ps = cairo.SVGSurface("svgfile.svg", 390, 60) ``` 要在 PyCairo 中創建 SVG 文件,我們必須使用`cairo.SVGSurface`對象創建 SVG 表面。 ```py cr.show_page() ``` `show_page()`方法調用完成了 SVG 文件的呈現。 ![SVG file in Chrome](https://img.kancloud.cn/30/05/3005d5c313015b64fa103b3f15ae5092_661x175.jpg) SVG file in Chrome ## GTK 窗口 在最后一個示例中,我們在 GTK 窗口上繪制。 該后端將在本教程的其余部分中使用。 `gtkwindow.py` ```py #!/usr/bin/python ''' ZetCode PyCairo tutorial This program uses PyCairo to draw on a window in GTK. Author: Jan Bodnar Website: zetcode.com Last edited: April 2016 ''' from gi.repository import Gtk import cairo class Example(Gtk.Window): def __init__(self): super(Example, self).__init__() self.init_ui() def init_ui(self): darea = Gtk.DrawingArea() darea.connect("draw", self.on_draw) self.add(darea) self.set_title("GTK window") self.resize(420, 120) self.set_position(Gtk.WindowPosition.CENTER) self.connect("delete-event", Gtk.main_quit) self.show_all() def on_draw(self, wid, cr): cr.set_source_rgb(0, 0, 0) cr.select_font_face("Sans", cairo.FONT_SLANT_NORMAL, cairo.FONT_WEIGHT_NORMAL) cr.set_font_size(40) cr.move_to(10, 50) cr.show_text("Disziplin ist Macht.") def main(): app = Example() Gtk.main() if __name__ == "__main__": main() ``` 該示例彈出一個居中的 GTK 窗口,在該窗口上繪制`"Disziplin ist Macht"`文本。 ```py from gi.repository import Gtk import cairo ``` 我們導入必要的 PyCairo 和 GTK 模塊。 ```py darea = Gtk.DrawingArea() ``` 我們將使用`Gtk.DrawingArea`小部件。 ```py darea.connect("draw", self.on_draw) ``` 重新繪制窗口時,會發出`draw`信號。 我們將該信號連接到`on_draw()`回調。 ```py def on_draw(self, wid, cr): ... ``` 繪圖是在`on_draw()`方法內部完成的。 第三個參數是 Cairo 上下文。 它是自動提供給我們的; Cairo 庫內置在 GTK 系統中。 ![GTK window](https://img.kancloud.cn/db/ff/dbffb285240f7746faa36f8f1ece2856_422x146.jpg) 圖:GTK 窗口 在本章中,我們介紹了受支持的 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>

                              哎呀哎呀视频在线观看