2012-06-08 27 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'之前的操作。你能指出我詳細的解釋嗎?我的意思是,我看到它在這裏做了什麼,但我想讀一讀它的所有可能性。而且,正如你可能猜到的那樣,試圖用谷歌來搜索'|'是毫無意義的。 –