var max = Math.PI*2; var min = Math.PI*1; var current = Math.abs(Math.PI*1.8); var radius = 50; var lineWeight = 20; var x = 100; var y = 100; // controles do dat var controls = new function() { this.radius = radius; this.lineWeight = lineWeight; this.value = current; this.trackColor = "#eeeeee"; this.trackBarColor = "#e11818"; } // adicionar a biblioteca dat GUI para controlar var ui = new dat.GUI(); var controller = ui.add(controls,'radius',10,100); var controller2 = ui.add(controls,'lineWeight',lineWeight,100); var controller3 = ui.add(controls,'value',min,max); var controller4 = ui.addColor(controls,'trackColor'); var controller5 = ui.addColor(controls,'trackBarColor'); // desenhar quando mudar de valor controller.onChange(arco); controller2.onChange(arco); controller3.onChange(arco); controller4.onChange(arco); controller5.onChange(arco); function arco(){ var el = document.getElementById("arco").getContext("2d"); // apagar antes de usar el.clearRect(0,0,500,500); el.beginPath(); el.arc(x,y,controls.radius,min,max,false); el.lineWidth = controls.lineWeight; el.strokeStyle = controls.trackColor; el.stroke(); // desenhar o valor para preenchimento el.beginPath(); el.arc(x,y,controls.radius,min,controls.value,false); el.lineWidth = controls.lineWeight; el.strokeStyle = controls.trackBarColor; el.stroke(); // add label el.fillText((Math.abs((controls.value)*100/Math.PI)-100).toFixed(0),x-5,y); } arco();
<canvas id="arco" width="500" height="600"> </canvas> <!-- www.igorcosta.com --> <!-- twitter @igorcosta -->