2
我目前正試圖在我的畫布語音泡泡元素下繪製一個箭頭。使用Javascript線繪製箭頭至
我的問題:
箭頭的右側似乎是路不再那麼左側。
有什麼我想:
我試圖創建下列方式箭頭:這似乎工作,因爲在這裏可以看到
ctx.moveTo(x, y);
ctx.lineTo(30, 30);
ctx.lineTo(50, 10);
:https://jsfiddle.net/eefja4kk/1/
但是無論我嘗試什麼,我都無法讓它在我目前的代碼中工作。我感謝任何形式的幫助和建議。
我當前的代碼:
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext("2d");
ctx.font = "12px Helvetica";
var text = 'Speechbubble Speechbubble Speechbubble';
var fontHeight = getTextHeight(text, ctx.font);
component(ctx, ctx.measureText(text).width, fontHeight, "#37f", 10, 10, 16, text);
function component(ctx, width, height, color, x, y, radius, text)
{
var r = radius;
var w = width + 40;
var h = height + 40;
var pi2 = Math.PI * 2;
var ap = w * 0.15;
var aw = 5;
var ah = 10;
ctx.beginPath();
ctx.arc(r, r, r, pi2 * 0.5 , pi2 * 0.75);
ctx.arc(w - r, r, r, pi2 * 0.75, pi2);
ctx.arc(w - r, h - r, r, 0, pi2 * 0.25);
// Speechbubble arrow
ctx.lineTo(w - ap, h);
ctx.lineTo(w - (ap * 2), h + ah);
ctx.lineTo(w - (ap * 2) - (aw * 2), h);
ctx.arc(r , h - r, r, pi2 * 0.25, pi2 * 0.5);
ctx.fillStyle = '#37f';
ctx.fill();
// Text fillstyle
ctx.fillStyle = "#fff";
ctx.fillText(text, w - ctx.measureText(text).width - 20, h - fontHeight - 10);
}
function getTextHeight(txt, font)
{
var el = document.createElement('div'), height;
el.style.cssText = "position:fixed; padding:0; left:-9999px; top:-9999px; font:" + font;
el.textContent = txt;
document.body.appendChild(el);
height = parseInt(getComputedStyle(el).getPropertyValue('height'), 10);
document.body.removeChild(el);
return height;
}
<canvas width="500" height="500" id="canvas"></canvas>
第二個是我一直試圖歸檔的確切結果!非常感謝。 – dane