首頁 > 後端開發 > Golang > 主體

如何使用 Gio 設定標題列圖標

WBOY
發布: 2024-02-09 21:18:09
轉載
552 人瀏覽過

如何使用 Gio 设置标题栏图标

php小編魚仔今天為大家介紹一個簡單又實用的方法,即如何使用 Gio 設定標題列圖示。在開發桌面應用程式時,一個漂亮的標題列圖示可以增加應用程式的吸引力和專業感。透過使用 Gio,一個功能強大的圖形庫,我們可以輕鬆地實現這一目標。在本文中,我們將逐步介紹如何使用 Gio 設定標題列圖標,讓您的應用程式在視覺上更加出色。讓我們一起來看看吧!

問題內容

我在使用 Gio UI (https://gioui.org/) 時遇到問題。

如您所見,視窗圖示未設置,並且沒有選項可以設定它。

當您建立新視窗時,您只能設定標題:

w := app.NewWindow(app.Title("My APP Title"))
登入後複製

但如果我理解正確,圖標應該從資源清單中加載:

go\pkg\mod\[email protected]\app\internal\windows\windows.go
登入後複製

//

func LoadImage(hInst syscall.Handle, res uint32, typ uint32, cx, cy int, fuload uint32) (syscall.Handle, error) {
    h, _, err := _LoadImage.Call(uintptr(hInst), uintptr(res), uintptr(typ), uintptr(cx), uintptr(cy), uintptr(fuload))
    if h == 0 {
        return 0, fmt.Errorf("LoadImageW failed: %v", err)
    }
    return syscall.Handle(h), nil
}
登入後複製

為了建立資源清單,我使用 go winres:https://github.com/tc-hib/go-winres

我已按照指南中的說明在 winres.json 中正確設定了應用程式圖示和工作列中的圖示。

我認為應該有一種方法可以在應用程式標題中設定視窗圖標,但我找不到應該在 json 中指定哪個鍵:

{
  "RT_GROUP_ICON": {
    "APP": {
      "0000": [
        "icon_64.png",
        "icon_48.png",
        "icon_32.png",
        "icon_16.png"
      ]
    },
    "OTHER": {
      "0000": "icon.png"
    },
    "#42": {
      "0409": "icon_EN.ico",
      "040C": "icon_FR.ico"
    }
  }
}
登入後複製

解決方法

官方的方法是使用gogio 工具,不幸的是,與go-winres 相比,該工具的文檔非常少,並且有很多限制。

使用 go install gioui.org/cmd/gogio@latest 安裝它

然後使用以下命令編譯您的應用程式:

@GOOS=windows GOARCH=amd64 gogio -buildmode=exe -icon=appicon.png -arch=amd64 -target=windows -o myapp.exe app-path/
登入後複製

根據您的需求更改架構和路徑。

無論如何,據我了解gogio僅支援png,它會自動產生所有需要的解析度。

由於我想使用go-winres,所以我剛剛使用了Resource Hacker反編譯exe資源。

我發現要設定圖標,您需要像這樣設定 winres.json:

{
  "RT_GROUP_ICON": {
    "#1": {
      "0409": "myicon_EN.ico"
    }
  },
  "RT_MANIFEST": {
    "#1": {
      "0409": 
// Your settings
  }
}
登入後複製

然後就可以用go buildgo-winres正常編譯了,只要記得設定-ldflags=-H=windowsgui

##############################################################

以上是如何使用 Gio 設定標題列圖標的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:stackoverflow.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!