以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [杰哥的分享]狐表实现“加载中”效果的遮罩层/等待窗口方案。2行代码简单控制,支持圆角、无锯齿、透明窗体、自定义Logo、无内存泄露,样式简约,代码一抄即用 ,长时间执行的代码强烈推荐配合使用  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=184244)

--  作者:chen37280600
--  发布时间:2022/11/29 17:11:00
--  [杰哥的分享]狐表实现“加载中”效果的遮罩层/等待窗口方案。2行代码简单控制,支持圆角、无锯齿、透明窗体、自定义Logo、无内存泄露,样式简约,代码一抄即用 ,长时间执行的代码强烈推荐配合使用

(快速浏览杰哥分享过的所有经验汇总,点击跳转


1简介
1.1效果图
长时间执行的代码,加个等待窗口,让用户等待,增加友好度,一般这在web领域叫遮罩层。不过狐表Exe的UI框架里并没有集成这个,只能自己变通实现试下。

此主题相关图片如下:1.png
按此在新窗口浏览图片

这个Loading不是挺优雅的吗?(我提供这个简约通用的样式,就是希望你们拿走就用。论坛里分享的总是奇形怪状的加载动画,我怎么拿去见客户啊...

此主题相关图片如下:loading.gif
按此在新窗口浏览图片

我还提供PSD素材,让你能自己增加个logo呢

此主题相关图片如下:1-221129163z6164.gif
按此在新窗口浏览图片


1.2遮罩层特色
  1. 代码简单,控制开关也简单。
  2. 支持圆角和透明窗体效果。
  3. 可以自定义加载中的gif动画,添加你的自己的logo,(需要你有PS功底)。
  4. 提供通用简约的GIF图,能用于任何项目场合,不搞怪异化。
  5. 弹出位置在屏幕中间+向上偏移150像素,这就不会挡住业务代码出错时的MessageBox窗口
  6. 无内存泄露【重要】。试过连续打开关闭500次,内存在10M内波动,不会无限增加,程序不崩。


此主题相关图片如下:3.png
按此在新窗口浏览图片


1.3感谢前人分享

我综合比较了一下,最终选了第三个帖子去二次改造,感觉这个代码最少,好理解维护。不过它的方法存在一个严重缺陷
内存泄露严重,开循环200次打开直接程序崩了

此主题相关图片如下:4.png
按此在新窗口浏览图片

此主题相关图片如下:5.png
按此在新窗口浏览图片

其他是小问题:
  • 没有圆角
  • 没有半透明
  • 标题好丑
  • 代码有点乱
  • 等待窗口结束后,焦点会跳到其他程序(很烦人)

2教程
2.1放好图片素材
图片素材放到Images文件夹里,与待会全局代码的路径相匹配

此主题相关图片如下:1.png
按此在新窗口浏览图片

2.2添加全局代码

此主题相关图片如下:6.png
按此在新窗口浏览图片

代码如下:

以下内容只有回复后才可以浏览

2.3使用方法

此主题相关图片如下:7.png
按此在新窗口浏览图片

Try
    WaitShow() \'显示等待窗口

    \'模拟长耗时代码
    For i As Integer = 0 To 3000
        e.Form.Controls("TextBox1").Text = i
    Next    
Catch ex As Exception
    MessageBox.show(ex.Message)
Finally 
    WaitClose() \'关闭等待窗口
End Try


2.4注意事项
  • 推荐配合Try使用,Finally里放WaitClose(),防止因为业务代码异常而导致遮罩层不关闭。
  • 当然如果你有把握,中间过程代码不会出错的,不用Try,直接使用也没问题。如果真的出现异常,你可以告诉客户在底部菜单栏右键强制关闭。它的关闭,并不会影响原来主线程在做的事情。

3自定义加载GIF动画
这个需要你有PS基础,我已经提供了我这次使用的gif图的原PSD文件。需要在PS里打开,并且启动PS的`时间轴`功能。你要去百度学习一下PS的时间轴玩法和GIF保存方法
3.1添加自定义logo和背景
例如我加一个迈宝伦科技官网的logo去中间

此主题相关图片如下:8.png
按此在新窗口浏览图片


此主题相关图片如下:1.png
按此在新窗口浏览图片


成品效果:

此主题相关图片如下:1-221129163z6164.gif
按此在新窗口浏览图片

3.2透明背景和圆角
gif是支持透明背景的,圆角也支持,在PS做好即可。唯一要注意就是生成GIF图时,圆角要设置相应的`杂边`颜色,不然会有难看的`白色锯齿`


此主题相关图片如下:2.png
按此在新窗口浏览图片

以下是正确保存方法

此主题相关图片如下:3.png
按此在新窗口浏览图片


此主题相关图片如下:4.png
按此在新窗口浏览图片


3.3注意不要用某个绿色
在刚才的全局代码里有一个

...
waitForm.BackColor = Color.Green \'绿色背景框
waitForm.TransparencyKey = Color.Green \'针对绿色进行透明化,配合上面的绿色使用。因此也要求GIF图片不能有纯绿色RGB(0,128,0)
...

这个是狐表窗口实现边框透明的关键,设置绿色边框,并对绿色进行透明化。所以你如果GIF里刚好包含了RGB(0,128,0)的绿色,也会被抠图走,穿孔很丑了。
如果你的Gif图一定要用这种绿色,我推荐你可以换别的颜色组合,例如Color.Red。就跟好莱坞拍戏用绿幕,演员就别穿颜色相近的绿衣服一个道理。

4.案例源码下载


以下内容只有回复后才可以浏览
版本说明:程序需要20220818或以上的加密狗打开。如果你没有这个版本也没关系,可以下载源码,只要里面的GIF素材PS素材,配合上面分享的代码,复制就能用,不一定非得开源码看。

=====================================================================
杰哥免费分享的Exe系统


杰哥免费分享的web系统






===============================================================
顺便总结以前分享过的帖子,方便大家学习

联系QQ:2385350359


经验分享:
























[此贴子已经被作者于2024/6/5 18:12:41编辑过]

--  作者:linswcfr
--  发布时间:2022/11/29 17:26:00
--  
谢谢分享
--  作者:foxtablefanse
--  发布时间:2022/11/29 17:32:00
--  
沙发
--  作者:lindong
--  发布时间:2022/11/29 17:54:00
--  
讲得很详细,点赞
--  作者:wudishaoshuai
--  发布时间:2022/11/29 17:59:00
--  
看看


--  作者:qq51837000
--  发布时间:2022/11/29 19:16:00
--  

--  作者:肥肥记
--  发布时间:2022/11/29 19:47:00
--  
图片点击可在新窗口打开查看
--  作者:lshshlxsh
--  发布时间:2022/11/29 20:10:00
--  
图片点击可在新窗口打开查看
--  作者:newsun2k
--  发布时间:2022/11/29 20:31:00
--  
谢谢分享
--  作者:playmal
--  发布时间:2022/11/29 20:56:00
--  
你好