【C#界面】圆满实现无毛边异形窗体
【C#界面】完美实现无毛边异形窗体
实现效果图1:

实现效果图2:

实现效果图3:

异形窗体的实现思路
(一)、采用UpdateLayeredWindow这个api函数基于Png图alpha通道绘制异形窗口
优点:真正意义上的异形窗口
缺点:用了WS_EX_LAYERED后当前窗体不处理paint事件,所以窗体上无法绘制控件,但这个控件确存在,而且可以响应事件
解决无法绘制控件方法:
1、思路:
采用双层窗口:底层背景窗口层与顶层控件层,用控件层Show()背景层,同时处理窗体的窗口移动事件,让另外一个窗体同步移动或者做其它事情。
2、实现:
底层背景层:采用UpdateLayeredWindow这个api函数基于带Alpha通道的Png图绘制
顶层控件层:
方法一:采用无边框窗口,把窗口背景颜色BackColor设置一个不常用颜色例如:ff00ff颜色,且把窗口TransparencyKey颜色属性设跟背景色BackColor一样(意义:去除带背景色的区域从而显示后面背景层)
方法二:采用无边框窗口,把窗口背景设为背景层对应位置的位图,给人一种透明的效果,但是编辑会有所限制。(SkinWhetherTank属性可以切换这两种透明模式)
优点:可以解决显示控件的问题,不影响控件的使用
缺点:方法一会让部分控件有毛边,方法二会让窗体编辑受限制。(缺点有待解决,望高手指点)
属性:
GradientTime:控件层渐变特效时长(越小越快)。
MainPosition:窗口在绘图层位置。
SkinBack:设置或获取绘图层窗口背景。
SkinMobile:窗体是否可以移动。
SkinOpacity:设置或获取绘图层窗口透明度(0-255)。
SkinShowInTaskbar:绘图层是否出现在Windows任务栏中。
SkinSize:设置或获取绘图层窗口大小。
SkinTrankColor:绘图层需要透明的颜色。
SkinWhetherTank:绘图层是否开启位图仿透明 注意(SkinOpacity < 255时,此属性为False可达到背景透明,控件不透明的效果。)。
源码共享:
源码上传中
------解决方案--------------------
沙发,不错,
期待源码
------解决方案--------------------
不错,版主快来推荐下
------解决方案--------------------
期待等待源码
------解决方案--------------------
不错,期待lz的源码
------解决方案--------------------
****的资源下载是真慢慢慢慢。
------解决方案--------------------

------解决方案--------------------
不错,期待lz的源码
------解决方案--------------------
如果用api的话,是否适用于每一个WINDOWS系统?
------解决方案--------------------

------解决方案--------------------
围观欣赏下
------解决方案--------------------

------解决方案--------------------
效果不错,支持一下
【C#界面】完美实现无毛边异形窗体
实现效果图1:
实现效果图2:
实现效果图3:
异形窗体的实现思路
(一)、采用UpdateLayeredWindow这个api函数基于Png图alpha通道绘制异形窗口
优点:真正意义上的异形窗口
缺点:用了WS_EX_LAYERED后当前窗体不处理paint事件,所以窗体上无法绘制控件,但这个控件确存在,而且可以响应事件
解决无法绘制控件方法:
1、思路:
采用双层窗口:底层背景窗口层与顶层控件层,用控件层Show()背景层,同时处理窗体的窗口移动事件,让另外一个窗体同步移动或者做其它事情。
2、实现:
底层背景层:采用UpdateLayeredWindow这个api函数基于带Alpha通道的Png图绘制
顶层控件层:
方法一:采用无边框窗口,把窗口背景颜色BackColor设置一个不常用颜色例如:ff00ff颜色,且把窗口TransparencyKey颜色属性设跟背景色BackColor一样(意义:去除带背景色的区域从而显示后面背景层)
方法二:采用无边框窗口,把窗口背景设为背景层对应位置的位图,给人一种透明的效果,但是编辑会有所限制。(SkinWhetherTank属性可以切换这两种透明模式)
优点:可以解决显示控件的问题,不影响控件的使用
缺点:方法一会让部分控件有毛边,方法二会让窗体编辑受限制。(缺点有待解决,望高手指点)
属性:
GradientTime:控件层渐变特效时长(越小越快)。
MainPosition:窗口在绘图层位置。
SkinBack:设置或获取绘图层窗口背景。
SkinMobile:窗体是否可以移动。
SkinOpacity:设置或获取绘图层窗口透明度(0-255)。
SkinShowInTaskbar:绘图层是否出现在Windows任务栏中。
SkinSize:设置或获取绘图层窗口大小。
SkinTrankColor:绘图层需要透明的颜色。
SkinWhetherTank:绘图层是否开启位图仿透明 注意(SkinOpacity < 255时,此属性为False可达到背景透明,控件不透明的效果。)。
源码共享:
源码上传中
------解决方案--------------------
沙发,不错,
期待源码
------解决方案--------------------
不错,版主快来推荐下
------解决方案--------------------
期待等待源码
------解决方案--------------------
不错,期待lz的源码
------解决方案--------------------
****的资源下载是真慢慢慢慢。
------解决方案--------------------
------解决方案--------------------
不错,期待lz的源码
------解决方案--------------------
如果用api的话,是否适用于每一个WINDOWS系统?
------解决方案--------------------
------解决方案--------------------
围观欣赏下
------解决方案--------------------
------解决方案--------------------
效果不错,支持一下