【Go语言写界面】二、简单美化窗口,设置窗口图标,简单美化信息框,创建按钮和注册事件,遍历子控件

一、设置窗口透明类型,给窗口添加阴影,设置边框大小,窗口透明度,圆角

在这里插入图片描述

package main

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

func main() {
    // 初始化
    app.Init()
    a := app.New(true)
    // 启用自适应DPI
    a.EnableAutoDPI(true).EnableDPI(true)
    // 创建窗口
    w := window.New(0, 0, 430, 300, "xcgui", 0, xcc.Window_Style_Default|xcc.Window_Style_Drag_Window)

    // 设置窗口边框大小:标题栏高度34
    w.SetBorderSize(0, 34, 0, 0)
    // 设置窗口透明类型:阴影窗口, 带透明通道, 边框阴影, 窗口透明或半透明
    w.SetTransparentType(xcc.Window_Transparent_Shadow)
    // 设置窗口透明度:255就是不透明
    w.SetTransparentAlpha(255)
    // 设置窗口阴影:阴影大小8, 深度255, 圆角内收大小10, 是否强制直角false, 阴影颜色0也就是黑色
    w.SetShadowInfo(8, 255, 10, false, 0)

    // 显示窗口
    w.Show(true)
    // 运行消息循环
    a.Run()
    // 退出界面库释放资源
    a.Exit()
}

二、设置窗口图标

在这里插入图片描述

ico 图标可以自己随便找一个改名为 1.ico,和源码文件放在一起。

package main

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

//go:embed 1.ico
var icon []byte

func main() {
    // 初始化
    app.Init()
    a := app.New(true)
    // 启用自适应DPI
    a.EnableAutoDPI(true).EnableDPI(true)
    // 创建窗口
    w := window.New(0, 0, 430, 300, "xcgui", 0, xcc.Window_Style_Default|xcc.Window_Style_Drag_Window)

    // 设置窗口边框大小:标题栏高度34
    w.SetBorderSize(0, 34, 0, 0)
    // 设置窗口透明类型:阴影窗口, 带透明通道, 边框阴影, 窗口透明或半透明
    w.SetTransparentType(xcc.Window_Transparent_Shadow)
    // 设置窗口透明度:255就是不透明
    w.SetTransparentAlpha(255)
    // 设置窗口阴影:阴影大小8, 深度255, 圆角内收大小10, 是否强制直角false, 阴影颜色0也就是黑色
    w.SetShadowInfo(8, 255, 10, false, 0)

    // 从内存加载图片自适应大小
    windowIcon := imagex.NewByMemAdaptive(icon, 0, 0, 0, 0)
    // 设置程序默认窗口图标
    a.SetWindowIcon(windowIcon.Handle)

    // 显示窗口
    w.Show(true)
    // 运行消息循环
    a.Run()
    // 退出界面库释放资源
    a.Exit()
}

三、创建按钮,注册事件,简单美化信息框,遍历子控件

在这里插入图片描述

  • 所有封装好的窗口组件都在 **widget **包里。
  • 事件函数都是以 **AddEvent **开头的。
package main

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

//go:embed 1.ico
var icon []byte

func main() {
        // 初始化
        app.Init()
        a := app.New(true)
        // 启用自适应DPI
        a.EnableAutoDPI(true).EnableDPI(true)
        // 创建窗口
        w := window.New(0, 0, 430, 300, "xcgui", 0, xcc.Window_Style_Default|xcc.Window_Style_Drag_Window)

        // 设置窗口边框大小:标题栏高度34
        w.SetBorderSize(0, 34, 0, 0)
        // 设置窗口透明类型:阴影窗口, 带透明通道, 边框阴影, 窗口透明或半透明
        w.SetTransparentType(xcc.Window_Transparent_Shadow)
        // 设置窗口透明度:255就是不透明
        w.SetTransparentAlpha(255)
        // 设置窗口阴影:阴影大小8, 深度255, 圆角内收大小10, 是否强制直角false, 阴影颜色0也就是黑色
        w.SetShadowInfo(8, 255, 10, false, 0)

        // 从内存加载图片自适应大小
        windowIcon := imagex.NewByMemAdaptive(icon, 0, 0, 0, 0)
        // 设置程序默认窗口图标
        a.SetWindowIcon(windowIcon.Handle)

        // 创建按钮
        btn := widget.NewButton(20, 50, 100, 30, "MessageBox", w.Handle)
        // 注册按钮事件
        btn.AddEvent_BnClick(func(hEle int, pbHandled *bool) int {
                // 是否点了确定按钮
                var isOK bool
                // 创建可自定义的信息框
                md := w.Msg_Create("标题", "内容", xcc.MessageBox_Flag_Ok|xcc.MessageBox_Flag_Cancel, xcc.Window_Style_Modal)
                // 设置窗口边框大小
                md.SetBorderSize(0, 34, 0, 0)
                // 设置窗口透明类型:阴影窗口, 带透明通道, 边框阴影, 窗口透明或半透明
                md.SetTransparentType(xcc.Window_Transparent_Shadow)
                // 设置窗口透明度:255就是不透明
                md.SetTransparentAlpha(255)
                // 设置窗口阴影:阴影大小4, 深度255, 圆角内收大小6, 是否强制直角false, 阴影颜色0也就是黑色
                md.SetShadowInfo(4, 255, 6, false, 0)
                // 遍历子控件, 找到确定按钮
                for i := int32(0); i < md.GetChildCount(); i++ {
                        hEle := md.GetChildByIndex(i)
                        if xc.XC_IsHXCGUI(hEle, xcc.XC_BUTTON) && xc.XBtn_GetText(hEle) == "确 定" { // 是确定按钮
                                btn := widget.NewButtonByHandle(hEle)
                                btn.AddEvent_BnClick(func(hEle int, pbHandled *bool) int {
                                        isOK = true
                                        return 0
                                })
                                break
                        }
                }
                // 显示模态窗口
                md.DoModal()
                if isOK {
                        w.MessageBox("提示", "你点击了确定按钮", xcc.MessageBox_Flag_Ok, xcc.Window_Style_Default)
                }
                return 0
        })

        // 显示窗口
        w.Show(true)
        // 运行消息循环
        a.Run()
        // 退出界面库释放资源
        a.Exit()
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值