如何根据文本长度动态居中画布javascript

时间:2013-11-19 20:05:04

标签: javascript

我想以“我的文字”为中心!无论字符串的长度如何......随着文本的长度变长,x坐标需要更少。

如何获取字符串的x长度?

<html>
    <head>
       <script>
           window.onload = function(){
               var canvas = document.getElementById("myCanvas");
               var context = canvas.getContext("2d");
               var imageObj = new Image();
               imageObj.onload = function(){
                   context.drawImage(imageObj, 0, 0);
                   context.font = "12pt Arial";
                   context.fillText("My TEXT!", 20, 20);
               };
           imageObj.src = "http://images.google.com/intl/en_ALL/images/srpr/logo11w.png"; 
           };
       </script>
    </head>
    <body>
        <canvas width="282px" height="177px" id="myCanvas"></canvas>
    </body>
</html>

3 个答案:

答案 0 :(得分:1)

只需将其添加到您的代码中:

imageObj.onload = function(){
    context.drawImage(imageObj, 0, 0);

    context.font = "12pt Arial";

    /// set text alignment to center
    context.textAlign = 'center';

    /// draw from center
    context.fillText("My TEXT!", canvas.width * 0.5, 20);
};

如果您需要获取x坐标本身,您需要根据文本的宽度(在设置字体后)计算它:

var width = context.measureText(myText).width;
var x = (canvas.width - width) * 0.5;

答案 1 :(得分:1)

尝试设置文字对齐方式。

context.textAlign = "center";
context.fillText("My LONGGGGG TEXT!", (canvas.width)/2, 20);

答案 2 :(得分:0)

这应该是你要找的。 http://www.html5canvastutorials.com/tutorials/html5-canvas-text-align/

画布上有一个textAlign属性,您可以设置为“居中”。然后在画布的正中间开始填充文本。

编辑 - 这是一个小提琴http://jsfiddle.net/mlienau/2MnnC/