深入探索VEX EDR V5的setPenColor语句的用法

​Hi , 大家好。

最近啊,Mr.期杉在开发"数字雨"项目的过程中,遇到了一个难题:如何给界面上不同的符号设置不同的亮度。在深入的研究之后,发现了setPenColor语句的新用法,特此分享。

先来详聊一下遇到的问题。先看一下以下两张图,哪一张的展示效果更好呢?很明显,右边那张每一列有渐变的效果比左边的看上去更加的具有科技感。在这里插入图片描述
为了实现右边的效果,我特地去查了下VEXCode的API文档,查到了setPenColor一共有四种用法,如下所示。
在这里插入图片描述
通过实践发现,前两种用法只能够通过传入指定的颜色名称,来给画笔设置相应的颜色,无法实现同一种颜色不同亮度的效果。

第四种vex::brain::lcd::setPenColor(int hue)需要我们传入一个代表hue值的整数。通过查找资料,我发现了一些有意思的概念。
hue直译为色调,表示一种颜色区别于另一种颜色的特征。色调通常是颜色、色调、阴影和色调的同义词。更具体地说,在物理学方面,色调是一个人所能看到的光的主要波长——黄、红、蓝、绿等。
简单的说就是,hue只能区分不同的颜色,无法实现亮暗之间的过渡效果。因此,第四种用法也不行。

第三种vex::brain::lcd::setPenColor(const char *color)需要我们传入一个代表颜色的字符串,也就是所谓的颜色码,如"#00FF00"(以#开头,6位数字分为3组,每组两位,依次表示红、绿、蓝三种颜色的强度),是RGB颜色值所对应的十六进制的表示形式。通过查阅,发现,RGB是能够实现同一种颜色的不同亮度的。

以绿色为例,在画图软件的编辑颜色功能中,当我们把颜色码的第一组和第三组全都设置成“00”,第二组设置成“00”->“FF”,发现,颜色从暗绿色慢慢的变成了亮绿色。(十六进制的00=十进制的0,十六进制的FF=十进制的255)
在这里插入图片描述

找到思路之后,对每一条的数字雨按照个数不同,均匀的分配00->FF之间的值,即可实现最终的效果。(视频最终效果见关联视频号下的VEX之黑客帝国)

详细的视频展示效果,请搜索wx公众号:"期杉机器人编程"下的视频号进行查看。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值