C++/GDI+ 学习笔记(五)——应用实例——半透明的阴影效果
2012-05-10 11:49
615 查看
利用 GDI+可以很容易的描画出逼真的半透明效果的阴影。
void DrawShadow(Graphics &g, GraphicsPath ButtonPath)
{
g.SetPageUnit(UnitPixel); //设置Graphics的坐标单位为像素
GraphicsPath &ShadowPath = *(ButtonPath.Clone()); //拷贝一个按钮区域路径的副本,用来生成阴影区域路径
// 获得阴影区域
Matrix ShadowMatrix;
ShadowMatrix.Translate( ShadowSize, ShadowSize );// 平移,ShadowSize即阴影延伸出来的像素数,这里是向右下方移动的,可以根据实际情况修改。
ShadowPath.Transform(&ShadowMatrix); // 应用矩阵
Region ButtonRegion(&ButtonPath); //利用按钮的路径建立按钮区域
Region ShadowRegion(&ShadowPath); //利用阴影路径建立阴影的区域
ShadowRegion.Exclude(&ButtonRegion); // 区域求差,这样就得出了纯粹的阴影区域,排除了阴影区域和按钮区域重合的部分。
// 初始化渐变画刷
PathGradientBrush brush(&ShadowPath);
brush.SetCenterColor(ShadowColor); // 这里利用的是路径渐变画刷
Color colors[] = {Color(0, 0, 0, 0)};
int count = 1;
brush.SetSurroundColors(colors, &count);
brush.SetFocusScales(0.75f, 0.75f); //对渐变效果进行调整,使其更加自然。这句的实际作用是对渐变效果进行缩放。参数是横纵两个坐标轴的缩放比例。
g.FillRegion(&brush, &ShadowRegion);
delete &ShadowPath; //别忘了删除Clone出来的副本。
}
上图就是通过上面的代码画出来的。当然了。文字的白色边缘是通过发光效果画出来的。整个按钮是我自己写的一个很强大的自绘按钮控件。
转帖:http://blog.csdn.net/eplanet/article/details/2046857
void DrawShadow(Graphics &g, GraphicsPath ButtonPath)
{
g.SetPageUnit(UnitPixel); //设置Graphics的坐标单位为像素
GraphicsPath &ShadowPath = *(ButtonPath.Clone()); //拷贝一个按钮区域路径的副本,用来生成阴影区域路径
// 获得阴影区域
Matrix ShadowMatrix;
ShadowMatrix.Translate( ShadowSize, ShadowSize );// 平移,ShadowSize即阴影延伸出来的像素数,这里是向右下方移动的,可以根据实际情况修改。
ShadowPath.Transform(&ShadowMatrix); // 应用矩阵
Region ButtonRegion(&ButtonPath); //利用按钮的路径建立按钮区域
Region ShadowRegion(&ShadowPath); //利用阴影路径建立阴影的区域
ShadowRegion.Exclude(&ButtonRegion); // 区域求差,这样就得出了纯粹的阴影区域,排除了阴影区域和按钮区域重合的部分。
// 初始化渐变画刷
PathGradientBrush brush(&ShadowPath);
brush.SetCenterColor(ShadowColor); // 这里利用的是路径渐变画刷
Color colors[] = {Color(0, 0, 0, 0)};
int count = 1;
brush.SetSurroundColors(colors, &count);
brush.SetFocusScales(0.75f, 0.75f); //对渐变效果进行调整,使其更加自然。这句的实际作用是对渐变效果进行缩放。参数是横纵两个坐标轴的缩放比例。
g.FillRegion(&brush, &ShadowRegion);
delete &ShadowPath; //别忘了删除Clone出来的副本。
}
上图就是通过上面的代码画出来的。当然了。文字的白色边缘是通过发光效果画出来的。整个按钮是我自己写的一个很强大的自绘按钮控件。
转帖:http://blog.csdn.net/eplanet/article/details/2046857
相关文章推荐
- C++/GDI+ 学习笔记(五)——应用实例——半透明的阴影效果
- C++/GDI+ 学习笔记(五)——应用实例——半透明的阴影效果
- C++学习笔记(三)C++中cstring类的用法和应用实例
- C++学习笔记(二)C++中template的用法和应用实例
- C++/GDI+ 学习笔记(一)——安装、配置&使用
- Java Socket套接字应用实例-java学习笔记(1)
- Unity Shader 学习笔记(十) 滚动效果Shader实例
- Android开发学习笔记--计时器的应用实例
- NodeJS学习笔记之Connect中间件应用实例
- 【OpenCV学习笔记】九、实例应用(二)鼠标截图程序及滑动条视频播放程序
- C++:GDI+ 半透明的阴影效果
- ASP.NET MVC学习笔记-ViewEngine 深入解析与应用实例
- [C++学习笔记] 链表应用1判断一个集和是否为另一个集合的子集
- C++:GDI+ 半透明的阴影效果
- Spring boot入门实例 简易登录(精通Spring+4.x++企业应用开发实战 学习笔记二)
- 【C++学习笔记】一个使用new和delete的实例
- C++/GDI+ 学习笔记(二)——几个例子
- (学习笔记)C++括号匹配----栈的应用
- 自定义属性之图片切换实例——初始化、实现切换效果——JS学习笔记2015-5-29(第42天)
- 数据结构 学习笔记(一):基本概念:什么是数据结构和算法,应用实例