2015-07-21 124 views
0

我在畫布上有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(); 
       } 
      } 
+0

你是什麼意思在形狀中添加文本?你想要一行文字跟隨球? – fuyushimoya

+0

@fuyushimoya表示形狀/圓圈應該包含文本,例如:ball1,ball2等等? –

回答

1

您只需要使用球的x和y的值,以確保文本跟着球,並使用textAligntextBaseline輕鬆地對齊文本。

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得心應手。

+0

太棒了,正是我想要的。是否有一個簡單的竅門來對文本進行居中並相應調整大小 –

+0

是的,我編輯了我的答案,檢查jsfiddle,看看它們如何對齊中心。 – fuyushimoya

+0

感謝您的回答。只是想知道是否有任何方法讓球隨機旋轉。由於文字總是筆直?只要讓我知道你是否有想法。我可以深入挖掘,只需要一個指針。再次感謝 –