通过 Gio 构建 Go GUI 程序

共 1572字,需浏览 4分钟

 ·

2021-10-20 00:16

GUI 不是 Go 语言擅长的领域,但社区一直在努力,让 Go 进入 GUI 领域,于是有了 fyne、gio 等这样的 GUI 框架。

今天起,给大家带来一系列 Gio 教程,尝试从零开始构建一个 Gio GUI 程序。

本系列基于 Go1.17,而 Gio 没有发布具体的版本

01 Gio 是什么

Gio 在 Go 中实现了可移植的即时模式 GUI 程序。Gio 程序可在所有主要平台上运行:iOS/tvOS、Android、Linux (Wayland/X11)、macOS、Windows、FreeBSD、OpenBSD 和对浏览器的实验性支持 (Webassembly/WebGL)。有一个用于在虚拟机中运行 Gio 程序的 unikernel 端口[1]

Gio 包括一个基于 Pathfinder 项目[2]的高效矢量渲染器,以及一个基于 piet-gpu 项目[3]的实验渲染器。两种渲染器都支持 Vulkan、Metal、Direct3D 11 和 OpenGL ES。对于低端设备,有一个在未扩展的 OpenGL ES 2.0 上运行的 CPU 回调。

文本和其他形状仅使用其轮廓进行渲染,而无需将它们烘焙成纹理图像,以支持高效动画、转换绘图和显示分辨率独立性。

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

02 运行官方的示例

Gio 设计时让依赖尽可能少。它仅依赖用于窗口管理、输入和 GPU 绘图的平台库。

官方提供了一个 Hello 程序,执行如下命令:

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

成功会打开一个窗口:

另外一个更复杂的例子,material design 的 widgets:

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

结果:

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

03 系列教程

虽然命令行很棒,但 95% 的用户不是高级用户。他们想要按下按钮,切换开关,然后继续他们的生活。Gio 是一个很棒的工具包,用于构建满足你需求的精美、闪电般快速、灵活的用户界面。

该系列由 10 个教程组成,我们将完全从零开始,并构建一个自包含的 GUI 应用程序:

本系列教程基于 https://jonegil.github.io/gui-with-gio/,但不是简单的翻译。欢迎对 gio 感兴趣的一起交流。

参考资料

[1]

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

[2]

Pathfinder 项目: https://github.com/servo/pathfinder

[3]

piet-gpu 项目: https://github.com/linebender/piet-gpu




往期推荐


我是 polarisxu,北大硕士毕业,曾在 360 等知名互联网公司工作,10多年技术研发与架构经验!2012 年接触 Go 语言并创建了 Go 语言中文网!著有《Go语言编程之旅》、开源图书《Go语言标准库》等。


坚持输出技术(包括 Go、Rust 等技术)、职场心得和创业感悟!欢迎关注「polarisxu」一起成长!也欢迎加我微信好友交流:gopherstudio

浏览 332
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报