开源wangzexi_渐显图形按钮12关键字渐隐渐显淡出淡入
功能说明:该程序是一个基于易语言开发的自定义图形按钮控件类(“渐显图形按钮”),核心功能是为Windows窗口提供具备**动态渐变视觉效果的图形化按钮**,支持鼠标移入、移出、按下、释放等交互状态下的平滑图像过渡动画(非瞬时切换)。其本质是一个可复用的面向对象组件,通过子程序封装实现按钮生命周期管理、GDI双缓冲绘图、消息钩子拦截(重写WNDPROC)、多线程渐变渲染及状态同步控制。
程序主体由两个关键部分构成:
1. **“渐显图形按钮”程序集**:定义了一个完整的类模块,包含私有变量(如三张状态图片的兼容DC句柄、按钮句柄、鼠标状态标志、渐变线程句柄等)和一系列公开子程序。其中“.子程序 创建”为核心初始化入口,负责加载正常态/点燃态(即高亮/悬停态)/按下态三张字节集格式图片,创建对应的内存设备上下文(CreateCompatibleDC),并挂钩窗口过程(API_SetWindowLong + 按钮新过程)以接管WM_MOUSEMOVE、WM_LBUTTONDOWN、WM_LBUTTONUP、WM_PAINT等消息;“.子程序 按钮新过程”是消息分发中枢,检测鼠标位置与按钮矩形关系,动态更新“是否移入”“是否按下”状态,并在状态变更时启动或终止渐变线程;所有“取XXX”“置XXX”子程序均为标准属性访问器,用于外部读写内部状态,体现良好的封装性。
2. **主程序集(程序集1)**:承担全局初始化与配置职责,包括注册调试日志、设置默认渐变速度(10ms/帧)、启用/禁用按下态渐变开关,并提供“渐显图形按钮_设置渐变速度”“渐显图形按钮_设置是否启用按下时渐变”两个公开配置接口,赋予调用者灵活控制动画节奏与交互细节的能力。其底层依赖EThread支持库实现线程安全操作,渐变逻辑实际由未完整展示但已调用的“渐变线程”子程序执行(通过Alpha混合或像素级插值实现两图间透明度/色彩过渡)。
综上,本程序并非独立应用,而是一个**专业级UI增强控件**,专为解决易语言原生按钮缺乏美观动效的问题设计。它使开发者能轻松在窗体中添加具有现代感的图形按钮——当鼠标移入时,按钮从“正常图片”平滑过渡至“点燃图片”;按下时(若启用)再向“按下图片”渐变;移出或释放后反向渐变还原。整个过程由独立线程驱动,避免阻塞主线程,确保界面响应流畅。适用于制作安装向导、多媒体播放器、游戏辅助工具等对界面表现力要求较高的桌面软件。
======渐显图形按钮
| |
| |------ 创建
| |
| |------ 取图像高度
| |
| |------ 取图像宽度
| |
| |------ 取按钮句柄
| |
| |------ 置移入
| |
| |------ 取是否移入
| |
| |------ 取旧过程
| |
| |------ 取正常状态图片场景
| |
| |------ 取点燃状态图片场景
| |
| |------ 取按下状态图片场景
| |
| |------ 置渐变线程句柄
| |
| |------ 取渐变线程句柄
| |
| |------ 置正在渐变
| |
| |------ 取正在渐变
| |
| |------ 置是否按下
| |
| |------ 取是否按下
| |
| |------ _初始化
| |
| |------ _销毁
| |
| |
======程序集1
| |
| |------ _启动子程序
| |
| |------ _临时子程序
| |
| |------ 渐显图形按钮_设置渐变速度
| |
| |------ 渐显图形按钮_设置是否启用按下时渐变
| |
| |------ 按钮新过程
| |
| |------ 取鼠标所在窗口句柄_
| |
| |------ 渐变线程
| |
| |------ 高精度等待
| |
| |------ 透明
| |
| |------ 取图片句柄
| |
| |------ 渐显图形按钮_创建自窗口句柄
| |
| |------ 渐显图形按钮_创建自图形按钮
| |
| |------ LOWORD
| |
| |------ HIWORD
| |
| |
======图像处理程序集
| |
| |------ 图像_取图片宽度
| |
| |------ 图像_取图片高度
| |
| |------ 图像_取图片句柄
| |
| |------ Release
| |
| |------ get_Handle
| |
| |------ _ToDword
| |
| |------ 动态调用子程序
| |
| |
======调用的Dll
| |
| |---[dll]------ AlphaBlend
| |
| |---[dll]------ GetDc
| |
| |---[dll]------ ReleaseDC
| |
| |---[dll]------ SetCapture
| |
| |---[dll]------ ReleaseCapture
| |
| |---[dll]------ SelectObject
| |
| |---[dll]------ CreateCompatibleBitmap
| |
| |---[dll]------ CreateCompatibleDC
| |
| |---[dll]------ SetTimer
| |
| |---[dll]------ KillTimer
| |
| |---[dll]------ API_SetWindowLong
| |
| |---[dll]------ API_CallWindowProc
| |
| |---[dll]------ API_GetWindowRect
| |
| |---[dll]------ API_PostMessage
| |
| |---[dll]------ BeginPaint
| |
| |---[dll]------ EndPaint
| |
| |---[dll]------ WindowFromPoint
| |
| |---[dll]------ GetCursorPos
| |
| |---[dll]------ ScreenToClient
| |
| |---[dll]------ ChildWindowFromPointEx
| |
| |---[dll]------ SetWaitableTimer
| |
| |---[dll]------ CreateWaitableTimerA
| |
| |---[dll]------ CloseHandle
| |
| |---[dll]------ MsgWaitForMultipleObjects
| |
| |---[dll]------ GetObject
| |
| |---[dll]------ DeleteObject
| |
| |---[dll]------ GlobalAlloc
| |
| |---[dll]------ GlobalLock
| |
| |---[dll]------ CopyMemory
| |
| |---[dll]------ GlobalUnlock
| |
| |---[dll]------ CreateStreamOnHGlobal
| |
| |---[dll]------ CLSIDFromString
| |
| |---[dll]------ OleLoadPicture
| |
| |---[dll]------ CopyImage
| |
| |---[dll]------ GlobalFree
| |
| |---[dll]------ _P_INT32
| |
| |---[dll]------ CallWindowProc
| |
| |---[dll]------ RtlMoveMemory
======窗口程序集1
| |
| |------ __启动窗口_创建完毕
| |
| |------ _选择框1_被单击
注:本站源码主要来源于网络收集。如有侵犯您的利益,请联系我们,我们将及时删除!
部分源码可能含有危险代码,(如关机、格式化磁盘等),请看清代码在运行。
由此产生的一切后果本站均不负责。源码仅用于学习使用,如需运用到商业场景请咨询原作者。
使用本站源码开发的产品均与本站无任何关系,请大家遵守国家相关法律。