2013-12-17 3 views
2

Я хочу, чтобы круг был похож на круговую диаграмму с равными кусочками разных цветов. По какой-то причине я рисую круг, с дугами на стороне с цветами, с белым восьмиугольником в центре.Заполните круг javascript в срезах

for(var i=0;i<8;i++){ 
    ctx.beginPath(); 
    ctx.fillStyle= 'rgb(' + Math.floor(255-42.5*i) + ', 95, 180)'; 
    ctx.arc(300,300,radius,i*((Math.PI*2)/8),(i+1)*((Math.PI*2)/8)); 
    ctx.fill(); 
} 
+0

Некоторые подробности бы неплохо. Я действительно не вижу проблемы там – tewathia

ответ

2

Проблема заключается в том, что когда вы рисуете дугу, которая меньше, чем полный круг, все, что он делает это создает только дугу, и ограничивающий его с собой, а не с центром. Однако, если мы вынудим его переместиться в центр, тогда он будет рисовать срез в противоположность дуге. Я продемонстрировал это JSFiddle.

Обновленный код этого

var ctx=document.getElementById("canvas").getContext("2d"); 
var radius=100; 
for(var i=0;i<8;i++){ 
    ctx.beginPath(); 
    ctx.fillStyle='rgb(' + Math.floor(255-42.5*i) + ', 95, 180)'; 
    ctx.moveTo(300,300); //We have to add this, otherwise, it will fill the minimum area needed to fill the arc 

    ctx.arc(300,300,radius,i*Math.PI/4,(i+1)*((Math.PI/4)),false); 
    ctx.closePath(); 
    ctx.fill(); 
} 
+0

Невероятно и великолепно. Именно в этом и была моя проблема. Спасибо! – user3101346

Смежные вопросы