Скажем, я создал изображение в форме многоугольника, создав форму в холсте HTML5 и затем заполнив ее изображением, например. как показано ниже:Округлые края на изображении
Теперь я хочу, чтобы закруглить углы на этом шестиугольника.
Имеется lineJoin = "round"
свойство, но это, похоже, не работает (я считаю, что форма заполнена, и нет внешней линии для округления).
Кто-нибудь есть идеи, как это сделать с холстом HTML5 или любыми другими способами?
Вот код, который используется для создания образа:
var ctx = document.getElementById('myCanvas').getContext('2d');
var a = ctx.canvas.width, r = a/5;
var side = Math.sqrt((4/3) * r * r);
// Draw your image onto the canvas (here I'll just fill the
// surface with red
var img = new Image();
img.src = "https://upload.wikimedia.org/wikipedia/commons/0/03/Mountain_Bluebird.jpg";
img.onload = function() {
var pattern = ctx.createPattern(img, "no-repeat");
ctx.fillStyle = pattern;
ctx.fillRect(0, 0, a, a);
// Switch the blending mode
ctx.globalCompositeOperation = 'destination-in';
// Draw the hexagon shape to mask the image
ctx.beginPath();
ctx.moveTo(0, side/2);
ctx.lineTo(0, 3*side/2);
ctx.lineTo(r, 2*side);
ctx.lineTo(2*r, 3*side/2);
ctx.lineTo(2*r, side/2);
ctx.lineTo(r, 0);
ctx.closePath();
ctx.fill();
};
<canvas width="1000" height="1000" id="myCanvas"></canvas>
рисовать свои линии, которые создают шестиугольник немного короче, так что они заканчиваются немного перед каждой угловой точке, а затем нарисуйте [дугу] (HTTPS : //developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/arc) для создания закругленного угла. (Вероятно, потребуются некоторые вычисления, чтобы получить правильные позиции и углы.) // Возможно, использование пути клипа CSS или маски SVG сделает это проще. https://css-tricks.com/clipping-masking-css/ – CBroe
Просто любопытно. :-) Зачем использовать шаблон вместо 'context.drawImage'? – markE
@markE Я просто использовал первое, что мне попалось, чтобы выполнить работу сначала, но вы можете быть прав, используя '' 'context.drawImage'''; http://jsperf.com/drawimage-vs-canvaspattern/16. Не уверен, что я знаю достаточно о холсте, чтобы принять взвешенное решение. –