百搜优 发表于 2022-5-11 14:42:12

自绘窗口阴影2.0 支持Direct2D硬件加速 [复制链接]

https://att.125.la/data/attachment/forum/202112/29/174114djriwh1hhbrw1r2q.png

窗口阴影模块2.0 by a2002上个版本: https://bbs.125.la/forum.php?mod=viewthread&tid=14712177
https://att.125.la/data/attachment/forum/202112/29/174826hguer4xzw7xkwwdd.gif
把原始窗口阴影想象成单色的矩形
这个矩形经过高斯模糊处理后, 加上偏移即形成阴影
实际上绘制时与原窗口重叠的部分应该不计算, 这样的话效率还可以
https://att.125.la/data/attachment/forum/202112/29/174642xz50p5yoglyalzdk.jpg

优化了软件计算高斯模糊的速度, 采用缓存机制
加入了Direct2D硬件加速, 当然在你的设备不支持Direct2D时GDI仍可用
可以参考exdui4.1的源码, 把绘画函数封装起来, 通过一个标识决定用gdi+还是D2D这是个好主意, 然后它来了, 写了两天捏~
主要是D2D错误处理太复杂了, 尤其是那个设备丢失(移除?)的错误
但最终还是写出来啦, 流程大概如下:
https://att.125.la/data/attachment/forum/202112/29/174807gsm29fd9lzkgf8sd.jpg

你可能感觉是否开启硬件加速对阴影外观来说没有什么区别, 这是因为erf函数模拟的效果好
这二者的区别主要在速度方面, 把阴影半径调至最大, 然后最大化窗口或者频繁调整窗口大小, 可以明显地看出区别
            

            
            点我下载
            (已有 84 次下载)
            

            
            
      

      
               
            引用模块
            
            
            
               
                  源码文件名
                  模块文件名
               
                              
                  demo.e
                  
                        
                                                      
                              窗口阴影模块.ec
                           
                                                   
                        
                                          
               
                           
            
            

      
      
            
页: [1]
查看完整版本: 自绘窗口阴影2.0 支持Direct2D硬件加速 [复制链接]