转载原出处:http://blog.csdn.net/zhuhongshu/article/details/42580877
之前我写的程序使用阴影时,一直是使用codeproject网站上的WndShadow类,并且把它当作单独的模块来使用,后来觉得使用阴影的情况非常多,所以今天就把这个类改写了一下,让他融入到duilib,并且可以直接使用xml来描述阴影,不需要写任何c++代码。
以前的WndShadow类是用算法来计算阴影,灵活性很大,但是缺点就是效果不够理想,所以我另外给他附加了使用图片素材来贴阴影的功能。最终的新类名为CShadowUI。这个类可以单独使用,我把他集成到了自己的库里。为了融合到Duilib我修改了UiLib.h文件、UIDlgBuilder.cpp文件、UIManager.h文件、UIManager.cpp文件。
先贴两张效果图,以下是素材阴影和算法阴影的效果图:
通过设置xml的Window标签可以添加阴影,阴影的xml属性描述如下:
-
<Attribute name="showshadow" default="false" type="BOOL" comment="是否启用窗体阴影"/>
-
<Attribute name="shadowimage" default="" type="STRING" comment="阴影图片,使用此属性后自动屏蔽算法阴影(不支持source等属性设置)"/>
-
<Attribute name="shadowcorner" default="0,0,0,0" type="RECT" comment="图片阴影的九宫格描述"/>
-
<Attribute name="shadowsize" default="0" type="BYTE" comment="算法阴影的宽度(-20到20)"/>
-
<Attribute name="shadowsharpness" default="255" type="BYTE" comment="算法阴影的锐度"/>
-
<Attribute name="shadowdarkness" default="255" type="BYTE" comment="算法阴影的深度(相当于透明度)"/>
-
<Attribute name="shadowposition" default="0,0" type="SIZE" comment="算法阴影的偏移量"/>
-
<Attribute name="shadowcolor" default="0x000000" type="DWORD" comment="算法阴影的颜色,RGB格式,不支持透明度,使用shadowdarkness设置透明度"/>
前面的两个效果图的对应xml描述如下:
-
-
<Window size="840,600" sizebox="4,4,4,4" caption="0,0,0,75" mininfo="840,600" showshadow="true" shadowimage="shadow.png" shadowcorner="23,13,23,33">
-
-
<Window size="840,600" sizebox="4,4,4,4" caption="0,0,0,75" mininfo="840,600" showshadow="true" shadowsize="5" shadowposition="1,1" shadowcolor="#333333">
源码:
UIShadow.h源码为:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
/********************************************************************
-
created: 2015/01/09
-
filename: UIShadow.h
-
author: Redrain
-
-
purpose: DuiLib阴影类,在原WndShadow类的基础上,增加了通过PNG图片设置阴影的功能,并且把代码与DuiLib融合
-
*********************************************************************/
-
-
#ifndef __UISHADOW_H__
-
#define __UISHADOW_H__
-
-
#pragma once
-
#include "map"
-
版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/dongchongyang/article/details/73303130
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
-
发表于 2020-03-07 18:15:40
- 阅读 ( 1133 )
- 分类:算法