画布用文字填充形状
我在画布上有this示例。我想知道如何在形状中添加文字。画布用文字填充形状
我已经查看了绘制形状的代码,但并不确定如何添加文本。我能够添加文字,但不会随着球移动?
function draw()
{
context.clearRect(0, 0, stageWidth, stageHeight);
var i = balls.length;
while(--i > -1)
{
context.fillStyle = balls[i].color;
context.beginPath();
context.arc(balls[i].x,balls[i].y,balls[i].size,0,Math.PI*2,true);
context.closePath();
context.fill();
}
}
您只需要使用球的x和y的值,以确保文本跟着球,并使用textAlign
和textBaseline
轻松地对齐文本。
function draw()
{
context.clearRect(0, 0, stageWidth, stageHeight);
// Align once an for all.
context.textAlign = 'center'; // Set text align to center.
context.textBaseline = 'middle'; // Set text vertical align to middle.
var i = balls.length;
while(--i > -1)
{
context.fillStyle = balls[i].color;
context.beginPath();
context.arc(balls[i].x,balls[i].y,balls[i].size,0,Math.PI*2,true);
context.closePath();
context.fill();
// Easier to see the text.
context.fillStyle = 'black';
// Draw text `Ball # i` centered at position (x, y),
// with the width of the text equal to ball's size * 2.
context.fillText('Ball #' + i, balls[i].x ,balls[i].y, balls[i].size * 2);
}
}
看到改变jsfiddle,那是你想要的吗?
P.S:当用帆布玩,它总是最好保持HTML5 Canvas Cheat Sheet得心应手。
太棒了,正是我想要的。是否有一个简单的窍门来对文本进行居中并相应调整大小 –
是的,我编辑了我的答案,检查jsfiddle,看看它们如何对齐中心。 – fuyushimoya
感谢您的回答。只是想知道是否有任何方法让球随机旋转。由于文字总是笔直?只要让我知道你是否有想法。我可以深入挖掘,只需要一个指针。再次感谢 –
你是什么意思在形状中添加文本?你想要一行文字跟随球? – fuyushimoya
@fuyushimoya表示形状/圆圈应该包含文本,例如:ball1,ball2等等? –