GDI+学习笔记(六)渐变画笔
刷,顾名思义,它是一样的刷。提请设备,还记得常唱歌曲,"我是一个画家.." 好吧。跑题了。
本系列博客希望尽可能简单的描写叙述每项功能,而不希望把每一个參数都介绍的详具体细,假设须要。请查阅msdn,本节讲述的渐变画刷,主要有两种。一种是叫线性画刷(LinearGradientBrush),另一种叫路径画刷(PathGradientBrush),我希望以一种尽可能简单的方式去描写叙述它。但能力有限,所以有什么意见,希望各位能帮忙提出,谢谢。
(一)使用画刷
上一节中。我们实际上实现了上中下三个面。然后全部的内容都会绘制上一种颜色或者一张图片。而绘制颜色事实上本质上就是一种特殊的画刷,而这里我们将使用更高级的画刷--渐变的画刷来代替它们。
因此。我们本节的工作,就是要代替上一节中graphics.clear()的工作。其它的与上节内容没有不论什么差别。
(二)线性画刷
我们须要初始化一个线性画刷,代码例如以下:
LinearGradientBrush *lgb = new LinearGradientBrush(Point(0,0), Point(100,0),
Color::Blue, Color::Green);
简单说明一下參数。前两个參数,是两个点,这两个点组成了方向向量,唯一标记了渐进的方向。
后面两个參数,是两个颜色。指的是開始和结束的两个点的颜色。假设我们希望中间添加几组呢?我们能够设置插值,详细能够查阅GDI+的API函数:SetInterpolationColors。
然后,我们填充一下Graphics就能够了,代码例如以下:
bmpGraphics.FillRectangle(lgb, 0, 0, 100, 100);
ok,看看效果:
(三)路径画刷
相对照线性画刷,路径画刷就略微复杂一点。它相同是一种渐进变化的画刷,但它是从一个闭合路径的中心点向路径中渐变的一种画刷。
闭合路径的中心点默认是路径的几何中心,当然我们也能够通过SetCenterPoint来进行中心点的设置。
既然如此,那么我们首先须要定义一个闭合路径。这里我们定义一个正方形
GraphicsPath *gp = new GraphicsPath;
Point p[] = {
Point(0,0),Point(100,0),Point(100,100),Point(0,100)
};
gp->AddLines(p, 4);
然后,用这个正方形为路径渐进画刷初始化
PathGradientBrush *pgb = new PathGradientBrush(gp);
这之后,我们还须要设置中心的颜色和四周的颜色。
pgb->SetCenterColor(Color::White);
Color surroundColors[] = {
Color::Red,
Color::Green,
Color::Blue,
Color::Yellow
};
int nCount = 4;
pgb->SetSurroundColors(surroundColors, &nCount);
最后,填充路径
bmpGraphics.FillPath(pgb, gp);
至此,我们就完毕了渐进画刷的绘制,仅仅须要依照上节的内容。将其会知道hdc相应的graphics中就可以。看看效果:
(四)在正方体上使用渐进画刷
仅仅须要将上述内容会知道正方体上的三个面就可以,直接看看效果吧:
(五)其它说明
有非常多细节的操作。还须要详细使用中多多尝试,才干更熟练的使用。
版权声明:本文博客原创文章。博客,未经同意,不得转载。
GDI+学习笔记(六)渐变画笔的更多相关文章
- java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)
java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessCo ...
- Learning ROS for Robotics Programming Second Edition学习笔记(六) indigo xtion pro live
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...
- Typescript 学习笔记六:接口
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- python3.4学习笔记(六) 常用快捷键使用技巧,持续更新
python3.4学习笔记(六) 常用快捷键使用技巧,持续更新 安装IDLE后鼠标右键点击*.py 文件,可以看到Edit with IDLE 选择这个可以直接打开编辑器.IDLE默认不能显示行号,使 ...
- Go语言学习笔记六: 循环语句
Go语言学习笔记六: 循环语句 今天学了一个格式化代码的命令:gofmt -w chapter6.go for循环 for循环有3种形式: for init; condition; increment ...
- 【opencv学习笔记六】图像的ROI区域选择与复制
图像的数据量还是比较大的,对整张图片进行处理会影响我们的处理效率,因此常常只对图像中我们需要的部分进行处理,也就是感兴趣区域ROI.今天我们来看一下如何设置图像的感兴趣区域ROI.以及对ROI区域图像 ...
- Linux学习笔记(六) 进程管理
1.进程基础 当输入一个命令时,shell 会同时启动一个进程,这种任务与进程分离的方式是 Linux 系统上重要的概念 每个执行的任务都称为进程,在每个进程启动时,系统都会给它指定一个唯一的 ID, ...
- # go微服务框架kratos学习笔记六(kratos 服务发现 discovery)
目录 go微服务框架kratos学习笔记六(kratos 服务发现 discovery) http api register 服务注册 fetch 获取实例 fetchs 批量获取实例 polls 批 ...
- Spring Boot 学习笔记(六) 整合 RESTful 参数传递
Spring Boot 学习笔记 源码地址 Spring Boot 学习笔记(一) hello world Spring Boot 学习笔记(二) 整合 log4j2 Spring Boot 学习笔记 ...
- Redis学习笔记六:持久化实验(AOF,RDB)
作者:Grey 原文地址:Redis学习笔记六:持久化实验(AOF,RDB) Redis几种持久化方案介绍和对比 AOF方式:https://blog.csdn.net/ctwctw/article/ ...
随机推荐
- Thinkpad X200 屏幕备案
妈妈蛋,屏幕废物前几天(闪屏->暗->变暗),因此,它只能监视房外 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjk2NTg5MA= ...
- Android实现限制EditText输入文字的数量
一: 声明控件. TextView hasnumTV; TextView hasnum;// 用来显示剩余字数 int num = 50;// 限制的 ...
- android升级软件版本号,您安装后的新版本号,成功安装画面没有出现,或直接回到桌面
Intent intent = new Intent(Intent.ACTION_VIEW); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //an ...
- linux 文件查看目录的数
ls -l | grep '^-'| wc -l ls -l | grep -c '^-' ls -l 输出文件夹中的文件信息的一长串(注意,文件,不同于文件,它可能是一个文件夹.联系.设备文件) g ...
- C++编程有趣的标题1 于1~9填写的运算结果的中间符号等于100
于1 2 3 4 5 6 7 8 9将九个数字"+"要么"-"符号使得结果100,编程的所有组合. 注意:数字顺序不能改变 <pre name=" ...
- Git打补丁常见问题
Git打补丁常见问题 往往觉得得到某个功能的补丁就觉得这个功能我就已经成功拥有了,可是在最后一步的打补丁的工作也是须要相当慎重的,甚至有可能还要比你获取这个补丁花费的时间还要多.看到好多同行遇到这个问 ...
- directx11编程中遇到的错误及解决方法
(2016-05-10)xnamath.h 报错: 在标识符"XMConvertToRadians"的前面 报错如下: >d:\program files\microsoft ...
- 乐在其中设计模式(C#) - 装饰模式(Decorator Pattern)
原文:乐在其中设计模式(C#) - 装饰模式(Decorator Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 装饰模式(Decorator Pattern) 作者:weba ...
- Android - 用Fragments实现动态UI - 创建灵活的UI
当设计程序来支持各种不一样的屏幕尺寸时,可以在不同的布局中重用fragment来根据可用的屏幕大小来优化用户体验. 例如,在手机上可能使用一个fragment来使用单窗口用户体验比较合适.但是,你可能 ...
- 【C语言探索之旅】 第二部分第九课: 实战"悬挂小人"游戏 答案
内容简介 1.课程大纲 2.第二部分第九课: 实战"悬挂小人"游戏 答案 3.第二部分第十课预告: 安全的文本输入 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题, ...