Javascript在画布上绘制语音气泡fillStyle只是改变文本颜色

时间:2017-09-28 23:32:24

标签: javascript canvas

我目前正在尝试使用javascript创建一个应在canvas元素上绘制的语音气泡。

我的问题: ctx.fillStyle = "red";仅更改ctx.fillText颜色。但不是整个路径的背景颜色。如何为整个语音泡泡添加背景颜色?

Jsfiddle:https://jsfiddle.net/dr7q5yay/8/

我目前的代码如下所示:

var canvas = document.getElementById('canvas');
var ctx = canvas.getContext("2d");

ctx.font = "15px Helvetica";
var text = 'hello test test';

function drawBubble(ctx, x, y, w, h, radius, text)
{
   var r = x + w;
   var b = y + h;

   ctx.beginPath();
   ctx.fillStyle = "red";
   ctx.fill();
   ctx.strokeStyle = "black";
   ctx.lineWidth = "2";
   ctx.moveTo(x + radius, y);

   ctx.lineTo(r - radius, y);
   ctx.quadraticCurveTo(r, y, r, y + radius);
   ctx.lineTo(r, y + h-radius);
   ctx.quadraticCurveTo(r, b, r - radius, b);
   ctx.lineTo(x + radius, b);
   ctx.quadraticCurveTo(x, b, x, b - radius);
   ctx.lineTo(x, y + radius);
   ctx.quadraticCurveTo(x, y, x + radius, y);
   ctx.stroke();
   ctx.fillText(text, x + 20, y + 30);
}

drawBubble(ctx, 10, 60, ctx.measureText(text).width + 40, 50, 20, text);

1 个答案:

答案 0 :(得分:1)

代码几乎就在那里,只针对fill()fillStyle进行了一些更改:

diagram, experimental

<强> Modified fiddle

您也可以使用arc()s to draw a rounded rectangles(稍微减少开销)。