关于scratch的颜色

凌风

<h1>Scratch中的颜色问题</h1><h3>Scratch的颜色是HSV格式,跟RGB不一样的,我们在颜色设置代码输入的值,会被转换成HSV格式。</h3> <h3 style="text-align: center; ">============HSV============</h3> <h3>HSV即色相、饱和度、明度(英语:Hue, Saturation, Value),又称HSB,其中B即英语:Brightness。</h3> <h3>1.色相(H)是色彩的基本属性,就是平常所说的颜色名称,如红色、黄色等。</h3><h3>2.饱和度(S)是指色彩的纯度,越高色彩越纯,低则逐渐变灰,取0-100%的数值。</h3><h3>3.明度(V),亮度(L),取0-100%。</h3> <h3>============HSV============</h3> <h3>但是这个格式让我们很困扰,在做一些绘图程序的时候就不知道怎么办,原始的办法是慢慢摸索有没有。</h3><h3><br /></h3> <h3>这样可以大概看到颜色对应的值。</h3><h3>然而本质是什么?</h3><h3>本质在Scratch源码util包的Color.as里面</h3> <h3>看,这都是2009年的代码了,能更新下吗,不过也难为官方了,毕竟这样的话小孩子更容易理解吧,更何况还提供了颜色选择器的功能(对于画笔)</h3> <h3>可惜现在时间严重不够用,不然真的可以自己增加一个rgb的模块,造福世人,哦不,造福诸多一线老师。</h3> <h3>设定画笔颜色对应这段代码</h3> <h3>可以看到不同的代码块选择颜色和输入值对应的代码段</h3> <h3>内部调用了setPenHue,我们来看setPenHue</h3> <h3>因为选择颜色的时候实际上是选择的rgb所以要转换成hsv,然而我们输入数字则不同,你看到我们输入的颜色值</h3> <h1>先模200,然后如果是负值还要加上200</h1><h3><br /></h3> <h3>下面这个就比较复杂了</h3> <h3>实际上选择框哪里得到的就是rgb的值,不过是选择得到的</h3><h3>而数字输入的值择要经过模200如果负数还要加200的操作。</h3><h3>然后得到的penHue的值,还要经过复杂的换算,从hsv转换成rgb,这是何苦啊。。。。</h3><h3>然后。。。。接着分析就会得到最终的画笔颜色<span style="color: rgb(237, 35, 8);">penColorCache</span>好麻烦。</h3> <h3>根据阴影penshade的值来得到正确的颜色,还是挺麻烦的。</h3><h3>我们要做的就是根据rgb颜色倒推回去,太麻烦了。。。放弃了。。。。</h3><h3>最后推荐一本新书,但愿能对大家有所帮助。</h3><h3><br /></h3>