<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          通過(guò) Gio 構(gòu)建 Go GUI 程序

          共 1572字,需瀏覽 4分鐘

           ·

          2021-10-20 00:16

          GUI 不是 Go 語(yǔ)言擅長(zhǎng)的領(lǐng)域,但社區(qū)一直在努力,讓 Go 進(jìn)入 GUI 領(lǐng)域,于是有了 fyne、gio 等這樣的 GUI 框架。

          今天起,給大家?guī)?lái)一系列 Gio 教程,嘗試從零開(kāi)始構(gòu)建一個(gè) Gio GUI 程序。

          本系列基于 Go1.17,而 Gio 沒(méi)有發(fā)布具體的版本

          01 Gio 是什么

          Gio 在 Go 中實(shí)現(xiàn)了可移植的即時(shí)模式 GUI 程序。Gio 程序可在所有主要平臺(tái)上運(yùn)行:iOS/tvOS、Android、Linux (Wayland/X11)、macOS、Windows、FreeBSD、OpenBSD 和對(duì)瀏覽器的實(shí)驗(yàn)性支持 (Webassembly/WebGL)。有一個(gè)用于在虛擬機(jī)中運(yùn)行 Gio 程序的 unikernel 端口[1]。

          Gio 包括一個(gè)基于 Pathfinder 項(xiàng)目[2]的高效矢量渲染器,以及一個(gè)基于 piet-gpu 項(xiàng)目[3]的實(shí)驗(yàn)渲染器。兩種渲染器都支持 Vulkan、Metal、Direct3D 11 和 OpenGL ES。對(duì)于低端設(shè)備,有一個(gè)在未擴(kuò)展的 OpenGL ES 2.0 上運(yùn)行的 CPU 回調(diào)。

          文本和其他形狀僅使用其輪廓進(jìn)行渲染,而無(wú)需將它們烘焙成紋理圖像,以支持高效動(dòng)畫(huà)、轉(zhuǎn)換繪圖和顯示分辨率獨(dú)立性。

          Gio 的代碼在 https://git.sr.ht/~eliasnaur/gio,在 GitHub 上有鏡像:https://github.com/gioui/gio。

          02 運(yùn)行官方的示例

          Gio 設(shè)計(jì)時(shí)讓依賴盡可能少。它僅依賴用于窗口管理、輸入和 GPU 繪圖的平臺(tái)庫(kù)。

          官方提供了一個(gè) Hello 程序,執(zhí)行如下命令:

          $?go?run?gioui.org/example/hello@latest

          成功會(huì)打開(kāi)一個(gè)窗口:

          另外一個(gè)更復(fù)雜的例子,material design 的 widgets:

          $?go?run?gioui.org/example/kitchen@latest

          結(jié)果:

          這些示例教程可以在 https://github.com/gioui/gio-example 找到。

          03 系列教程

          雖然命令行很棒,但 95% 的用戶不是高級(jí)用戶。他們想要按下按鈕,切換開(kāi)關(guān),然后繼續(xù)他們的生活。Gio 是一個(gè)很棒的工具包,用于構(gòu)建滿足你需求的精美、閃電般快速、靈活的用戶界面。

          該系列由 10 個(gè)教程組成,我們將完全從零開(kāi)始,并構(gòu)建一個(gè)自包含的 GUI 應(yīng)用程序:

          本系列教程基于 https://jonegil.github.io/gui-with-gio/,但不是簡(jiǎn)單的翻譯。歡迎對(duì) gio 感興趣的一起交流。

          參考資料

          [1]

          unikernel 端口: https://eliasnaur.com/unik

          [2]

          Pathfinder 項(xiàng)目: https://github.com/servo/pathfinder

          [3]

          piet-gpu 項(xiàng)目: https://github.com/linebender/piet-gpu




          往期推薦


          我是 polarisxu,北大碩士畢業(yè),曾在 360 等知名互聯(lián)網(wǎng)公司工作,10多年技術(shù)研發(fā)與架構(gòu)經(jīng)驗(yàn)!2012 年接觸 Go 語(yǔ)言并創(chuàng)建了 Go 語(yǔ)言中文網(wǎng)!著有《Go語(yǔ)言編程之旅》、開(kāi)源圖書(shū)《Go語(yǔ)言標(biāo)準(zhǔn)庫(kù)》等。


          堅(jiān)持輸出技術(shù)(包括 Go、Rust 等技術(shù))、職場(chǎng)心得和創(chuàng)業(yè)感悟!歡迎關(guān)注「polarisxu」一起成長(zhǎng)!也歡迎加我微信好友交流:gopherstudio

          瀏覽 488
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  精品多人P群无码视频 | 国产精品激情综合 | 五月丁香乱伦文学 | 鸡巴欧美日韩 | 亚洲国产精品成人无码区 |