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

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()
}
8683

被折叠的 条评论
为什么被折叠?



