U: masking for lcl

This commit is contained in:
杨红岩 2024-04-23 19:00:06 +08:00
parent b492a5a1c4
commit e63bdffc8c
2 changed files with 14 additions and 9 deletions

View File

@ -20,15 +20,15 @@ func Create(window *cef.LCLBrowserWindow) *Mask {
var mask = new(Mask)
// 创建一个 form 或 panel、或其它任意 IWinControl 组件模拟遮罩
// form 可以设置透明度
mask.maskForm = lcl.NewForm(window) // form有窗口句柄
mask.maskForm.SetParent(window.WindowParent()) // 显示在浏览器窗口组件里的一个子窗口
mask.maskForm.SetBorderStyle(types.BsNone) // 因为是窗口所以要去掉标签栏效果和panel差不多了
mask.maskForm.SetAlign(types.AlClient) //铺满整个主窗口
mask.maskForm = lcl.NewForm(window) // form有窗口句柄
mask.maskForm.SetParent(window) // 显示在浏览器窗口组件里的一个子窗口
mask.maskForm.SetBorderStyle(types.BsNone) // 因为是窗口所以要去掉标签栏效果和panel差不多了
mask.maskForm.SetAlign(types.AlClient) //铺满整个主窗口
//mask.maskForm.SetColor(colors.ClSkyblue)
// 这是透明设置只能form, 但是它的子组件也会跟着半透明
mask.maskForm.SetAlphaBlend(true) //透明
mask.maskForm.SetAlphaBlendValue(200) //透明度
mask.maskForm.SetFormStyle(types.FsStayOnTop) //置顶??
mask.maskForm.SetAlphaBlend(true) //透明
mask.maskForm.SetAlphaBlendValue(200) //透明度
mask.maskForm.BringToFront()
// 创建一个gif播放组件
mask.gifPlay = gifanim.NewGIFAnimate(mask.maskForm)
mask.gifPlay.SetParent(mask.maskForm)

View File

@ -38,13 +38,12 @@ func main() {
if window.IsLCL() {
bw := window.AsLCLBrowserWindow().BrowserWindow()
part := bw.WindowParent()
if common.IsLinux() {
if common.IsLinux() { // Linux 只能在Gtk2使用还有些问题。不能像 windows 和 MacOS 那样
part.RevertCustomAnchors()
part.SetWidth(1)
part.SetHeight(1)
}
maskForm := mask.Create(bw)
maskForm.Show()
// 页面加载进度, 控制何时关闭遮罩
bw.Chromium().SetOnLoadingProgressChange(func(sender lcl.IObject, browser *cef.ICefBrowser, progress float64) {
v := int(progress * 100)
@ -68,6 +67,12 @@ func main() {
}
})
})
bw.Chromium().SetOnBeforeBrowser(func(sender lcl.IObject, browser *cef.ICefBrowser, frame *cef.ICefFrame, request *cef.ICefRequest, userGesture, isRedirect bool) bool {
cef.RunOnMainThread(func() {
maskForm.Show()
})
return false
})
}
})
//运行应用