Html5 canvas помощь в реализации стрелочки

239
13 мая 2017, 20:35

Имеется код:

var canvas = document.getElementById("canvas"); 
var ctx = canvas.getContext("2d"); 
 
// general settings 
var middleX = canvas.width / 2; 
var middleY = canvas.height / 2; 
var radius = canvas.width / 2 - canvas.width / 10; 
var startAngleIndex = 0.7; 
var endAngleIndex = 2.3; 
 
 
// Arrow settings 
var arrowValueIndex = 1.5; 
var arrowColor = "#d01617"; 
var arrowWidth = canvas.width / 20; 
 
 
var DrawArrow = function() { 
  var arrowAngle = arrowValueIndex * Math.PI; 
  var toX = middleX + (radius) * Math.cos(arrowAngle); 
  var toY = middleY + (radius) * Math.sin(arrowAngle); 
 
  ctx.beginPath(); 
  ctx.moveTo(middleX, middleY); 
  ctx.lineTo(toX, toY); 
  ctx.strokeStyle = arrowColor; 
  ctx.lineWidth = arrowWidth; 
  ctx.stroke(); 
 
}; 
DrawArrow();
<canvas id="canvas" width="300" height="300"></canvas>

Этот же код на jsfiddle

нужно сделать вот так :

Answer 1

Самым простым для вас вариантом будет взять готовую стрелочку и уже нарисовать ее. Приведу пример рисования стрелочки из SVG элемента. Просто скопируем PATH стрелки и передадим его в конструктор Path2D

let canvas = document.querySelector('canvas'); 
let ctx = canvas.getContext('2d'); 
let arrow = new Path2D("M10.273,5.009c0.444-0.444,1.143-0.444,1.587,0c0.429,0.429,0.429,1.143,0,1.571l-8.047,8.047h26.554  c0.619,0,1.127,0.492,1.127,1.111c0,0.619-0.508,1.127-1.127,1.127H3.813l8.047,8.032c0.429,0.444,0.429,1.159,0,1.587  c-0.444,0.444-1.143,0.444-1.587,0l-9.952-9.952c-0.429-0.429-0.429-1.143,0-1.571L10.273,5.009z"); 
 
ctx.fillStyle = '#ffcc00'; 
ctx.fill(arrow);
<canvas id="cnv" width="400px" height="400px"></canvas>

READ ALSO
Yandex Maps API. Не могу вывести baloon

Yandex Maps API. Не могу вывести baloon

Добрый деньРазбираюсь с Yandex API

483
Проверка размера файла перед загрузкой

Проверка размера файла перед загрузкой

Пытаюсь реализовать загрузку файлаПеред загрузкой хочу узнать размер

313
Асинхронный вызов функций

Асинхронный вызов функций

ЗдравствуйтеИзучаю JS и NodeJS

273