【Go语言写界面】一、使用xcgui完成go语言第一个软件界面

本文介绍了如何使用Go语言配合xcgui库创建GUI应用程序,包括获取库、设置dll路径、编写基本代码、编译程序以及将dll嵌入程序中。通过示例代码展示了如何创建窗口并运行消息循环,同时提供了优化程序体积的方法。后续内容将逐步深入,打造更复杂的界面。

一、获取xcgui库

go get -u github.com/twgh/xcgui

二、开始写代码

刚开始你只需要知道几个包,程序包:app、窗口包:window、元素包:widget、常量包:xcc、图片包:imagex

三、简单窗口和按钮

package main

import (
    "github.com/twgh/xcgui/app"
    "github.com/twgh/xcgui/imagex"
    "github.com/twgh/xcgui/widget"
    "github.com/twgh/xcgui/window"
    "github.com/twgh/xcgui/xcc"
)

func main() {
    // 1.初始化UI库
    app.Init()
    a := app.New(true)
    a.EnableAutoDPI(true).EnableDPI(true)
    // 2.创建窗口
    w := window.New(0, 0, 430, 300, "xcgui window", 0, xcc.Window_Style_Default|xcc.Window_Style_Drag_Window)

    // 设置窗口边框大小
    w.SetBorderSize(0, 30, 0, 0)
    // 设置窗口图标
    a.SetWindowIcon(imagex.NewBySvgStringW(svgIcon).Handle)
    // 设置窗口透明类型
    w.SetTransparentType(xcc.Window_Transparent_Shadow)
    // 设置窗口阴影
    w.SetShadowInfo(8, 255, 10, false, 0)

    // 创建按钮
    btn := widget.NewButton(165, 135, 100, 30, "Button", w.Handle)
    // 注册按钮被单击事件
    btn.AddEvent_BnClick(func(hEle int, pbHandled *bool) int {
        w.MessageBox("提示", btn.GetText(), xcc.MessageBox_Flag_Ok|xcc.MessageBox_Flag_Icon_Info, xcc.Window_Style_Modal)
        return 0
    })

    // 3.显示窗口
    w.Show(true)
    // 4.运行程序
    a.Run()
    // 5.释放UI库
    a.Exit()
}

const svgIcon = `<svg t="1669088647057" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5490" width="22" height="22"><path d="M517.12 512.8704m-432.3328 0a432.3328 432.3328 0 1 0 864.6656 0 432.3328 432.3328 0 1 0-864.6656 0Z" fill="#51C5FF" p-id="5491"></path><path d="M292.1472 418.7136c-85.0432 0-160.4096 41.3696-207.104 105.0624 4.5568 182.7328 122.368 337.3056 285.952 396.032 103.2192-33.28 177.92-130.048 177.92-244.3776 0-141.7216-114.944-256.7168-256.768-256.7168z" fill="#7BE0FF" p-id="5492"></path><path d="M800.2048 571.6992l-101.888-58.8288 101.888-58.8288c16.896-9.728 22.6816-31.3344 12.9536-48.2304l-55.296-95.744c-9.728-16.896-31.3344-22.6816-48.2304-12.9536l-101.888 58.8288V238.336c0-19.5072-15.8208-35.328-35.328-35.328H461.824c-19.5072 0-35.328 15.8208-35.328 35.328v117.6064L324.608 297.1136c-16.896-9.728-38.5024-3.9424-48.2304 12.9536l-55.296 95.744c-9.728 16.896-3.9424 38.5024 12.9536 48.2304l101.888 58.8288-101.888 58.8288c-16.896 9.728-22.6816 31.3344-12.9536 48.2304l55.296 95.744c9.728 16.896 31.3344 22.6816 48.2304 12.9536l101.888-58.8288v117.6064c0 19.5072 15.8208 35.328 35.328 35.328h110.592c19.5072 0 35.328-15.8208 35.328-35.328v-117.6064l101.888 58.8288c16.896 9.728 38.5024 3.9424 48.2304-12.9536l55.296-95.744c9.728-16.896 3.9424-38.5024-12.9536-48.2304z" fill="#CAF8FF" p-id="5493"></path><path d="M517.12 512.8704m-234.24 0a234.24 234.24 0 1 0 468.48 0 234.24 234.24 0 1 0-468.48 0Z" fill="#FFFFFF" p-id="5494"></path><path d="M517.12 512.8704m-103.5776 0a103.5776 103.5776 0 1 0 207.1552 0 103.5776 103.5776 0 1 0-207.1552 0Z" fill="#51C5FF" p-id="5495"></path></svg>`

四、编译程序

go build -ldflags="-s -w -H windowsgui" -trimpath

参数解释:

  • -H windowsgui 会隐藏控制台窗口
  • -s -w 去除了符号表和调试信息,这样可以减小软件体积。
  • -trimpath 清理调试路径信息,使可执行文件更加精简。

五、界面效果

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值