C++/GDI+ 学习笔记(五)——应用实例——半透明的阴影效果
2013-05-29 16:23
585 查看
利用 GDI+ 可以很容易的描画出逼真的半透明效果的阴影。
TAG: GDIPlus
TAG: GDIPlus
![]() 利用 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出来的副本。 } ![]() 上图就是通过上面的代码画出来的。当然了。文字的白色边缘是通过发光效果画出来的。整个按钮是我自己写的一个很强大的自绘按钮控件。 |
相关文章推荐
- C++/GDI+ 学习笔记(五)——应用实例——半透明的阴影效果
- C++/GDI+ 学习笔记(五)——应用实例——半透明的阴影效果
- C++学习笔记(二)C++中template的用法和应用实例
- C++学习笔记(三)C++中cstring类的用法和应用实例
- Linux 程序设计学习笔记----终端及串口编程及实例应用
- C++/GDI+ 学习笔记(四)——实用技巧——双缓冲(Double Buffer)
- C++/GDI+ 学习笔记(四)——实用技巧——双缓冲(Double Buffer)
- Android开发学习笔记--计时器的应用实例
- 【转】C++/GDI+ 学习笔记(四)——实用技巧——颜色矩阵(ColorMatrix)
- 自定义属性之图片切换实例——初始化、实现切换效果——JS学习笔记2015-5-29(第42天)
- c++学习笔记-map的使用实例(单词转换)
- C++/GDI+ 学习笔记(五)——实用技巧——颜色矩阵(ColorMatrix)
- C++/GDI+ 学习笔记(一)——安装、配置&使用
- CSS基础应用学习系列(3)——图像的CSS阴影效果
- <学习CSS>第三天笔记-css外观属性(颜色、行间距、对齐、首行缩进、字间距、单词间距 、颜色半透明、阴影)快捷方式、综合案例、引入CSS样式表(内部样式表、行内式、外部样式表)、三种样式表总结
- [C++学习笔记]链表应用2约瑟夫环问题
- 设计模式C++学习笔记之二十(完结篇 & 面向对象原则)设计模式C++实例下载
- C++学习笔记04之模板应用简介
- Java Socket套接字应用实例-java学习笔记(1)
- C++/GDI+ 学习笔记(一)——安装、配置&使用