2012-06-08 24 views
3

所以我试图绘制一个简单的色调轮,显示红色,绿色和蓝色的组件以及它们之间的关系。问题在于我的(简单的,一度)弧线正在接受后面的弧线,尽管我使用的是beginPath()closePath()如何获得新的画布弧形笔画样式?

我目前的进展是在http://meyerweb.com/eric/css/colors/hsl-from-rgb.html。最内层的戒指就是那个戒指的特色,蓝色渐变为黑色。下一个响铃应该只显示绿色渐变到黑色,而第三响铃应该只有红色渐变到黑色。最外面最厚的戒指是为了展示色相轮周围的全部光谱,您可以在细辐条中看到它(您可以在其他戒指中看到)。

如果我颠倒了绘图块的顺序,那么最外层的环很好,所有的内圈都弄乱了,所以很明显笔划样式正在向前泄漏。我只是无法弄清楚如何或为什么,也不知道如何克服这个问题。我是否应该定义四个单独的对象(例如,ctx1ctx4)并分别绘制到每个对象?

我看着different fillStyle colors for arc in canvas,但那里的建议似乎没有帮助我。其他谷歌搜索没有任何使用。

回答

1

不能使用小数为您的RGB值,你需要圆他们。

http://jsfiddle.net/M6KbD/

+0

DOH!我依靠浏览器来处理不正确的值(就像他们在超过0-255范围时所做的那样),这让我感到很难受。这是我之后的修复。谢谢! –

+0

每当我开始一个新的画布项目时,我都会咬上很多东西。 – Xanthir

1

我没有花很长时间看看你的代码,但问题可能不在于画布,它可能是你绘制所有东西的顺序。

你有4套,对吗?你从第一组,1从第二,1从第三,1从第四绘图1,然后又1从第一...

如果您更改顺序一切都会好起来:

http://jsfiddle.net/muatT/

(懒洋洋地,我只是复制了整个for循环冗余代码,因为它是。你也许可以简化代码很多)

+0

好了,你做的每个环单独回路。这就是我想要避免的情况,因为它看起来并不是必须的 - 只需在循环的每一遍中在每个环中绘制一个弧段即可。他们为什么需要在不同的循环中绘制? –

+0

看看安德鲁的小提琴的真正原因,这里的代码| 0向下舍入:http://jsfiddle.net/xhHwe/。我建议你给他的答案信贷 –

+0

哇 - 我从来没有见过'| 0'之前的操作。你能指出我详细的解释吗?我的意思是,我看到它在这里做了什么,但我想读一读它的所有可能性。而且,正如你可能猜到的那样,试图用谷歌来搜索'|'是毫无意义的。 –