私は半円のようなスピードメーターを作成しており、すべての色で半円を作成するのに成功しています。以下のデザインを参照してください。セミサークルのようなスピードメーターを作成
私が直面している問題は、ポインタとして機能する三角形を作成することです。それは300から850の値を中心に移動します。値段がこの範囲に達すると、ここでそれが指摘されます。
<canvas id="myCanvas" height="350" width="666">
</canvas>
JS:
window.onload = function(){
var canvas = document.getElementById("myCanvas");
var context = canvas.getContext("2d");
context.font = "14px Trebuchet MS";
context.fillStyle = "#aaaaaa";
context.fillText("300", 60, 218);
context.font = "14px Trebuchet MS";
context.fillStyle = "#aaaaaa";
context.fillText("850", 280, 218);
// drawArcShadow x y rad sAng eAng clockwise line fill
drawArcShadow(180, 200, 100, 0, 180, true, "#eeeeee","white");
function drawArcShadow(xPos, yPos, radius, startAngle, endAngle, clockwise, lineColor, fillColor) {
var startAngle = startAngle * (Math.PI/180);
var endAngle = endAngle * (Math.PI/180);
var radius = radius;
context.strokeStyle = lineColor;
context.fillStyle = fillColor;
context.lineWidth = 20;
context.beginPath();
context.arc(xPos, yPos, radius, startAngle, endAngle, clockwise);
context.fill();
context.stroke();
}
// drawArc x y rad sAng eAng clockwise line fill
drawArc(180, 200, 110, 0, 180, true, "#c1634a","rgba(255, 255, 255, 0)");
drawArc(180, 200, 110, 0, 263, true, "#ab5741","rgba(255, 255, 255, 0)");
drawArc(180, 200, 110, 0, 264, true, "#e59636","rgba(255, 255, 255, 0)");
drawArc(180, 200, 110, 0, 288, true, "#ce8631","rgba(255, 255, 255, 0)");
drawArc(180, 200, 110, 0, 289, true, "#e8d932","rgba(255, 255, 255, 0)");
drawArc(180, 200, 110, 0, 302, true, "#d0c52d","rgba(255, 255, 255, 0)");
drawArc(180, 200, 110, 0, 303, true, "#aecd9c","rgba(255, 255, 255, 0)");
drawArc(180, 200, 110, 0, 320, true, "#8db872","rgba(255, 255, 255, 0)");
function drawArc(xPos, yPos, radius, startAngle, endAngle, clockwise, lineColor, fillColor) {
var startAngle = startAngle * (Math.PI/180);
var endAngle = endAngle * (Math.PI/180);
var radius = radius;
context.strokeStyle = lineColor;
context.fillStyle = fillColor;
context.lineWidth = 20;
context.beginPath();
context.arc(xPos, yPos, radius, startAngle, endAngle, clockwise);
context.fill();
context.stroke();
}
}。
チェック:しかし、私のコードでそれを実装する方法: http://jsfiddle.net/n1rxcoue/ここ
は、ビットは、リファクタリング、コードです – Veer'ctx.translate(x、y)'と 'ctx.rotate(rad)'メソッドが必要です。 – Kaiido
良いチュートリアルやサンプルがありますか?それは素晴らしい。 – Veer