zoukankan      html  css  js  c++  java
  • HTML5 Canvas Text文本居中实例

    1.代码:

    <canvas width="700" height="300" id="canvasOne" class="canvasOne"></canvas>
    <script>
        var cancasOne = document.getElementById('canvasOne');
        var ctx = cancasOne.getContext('2d');
        var text = '后会无期',
            textMetrics,
            square_width = 20,
            font_height = 128;
        //画网线
        function drawGrid(color, stepx, stepy) {
            ctx.save();
            ctx.strokeStyle = color;
            ctx.lineWidth = 0.5;
            ctx.fillStyle = '#ffffff';
            ctx.fillRect(0, 0, canvasOne.width, canvasOne.height);
            //画竖线
            for (var i = stepx + 0.5; i < canvasOne.width; i += stepx) {
                ctx.beginPath();
                ctx.moveTo(i, 0);
                ctx.lineTo(i, canvasOne.height);
                ctx.stroke();
            }
            //画横线
            for (var i = stepx + 0.5; i < canvasOne.height; i += stepy) {
                ctx.beginPath();
                ctx.moveTo(0, i);
                ctx.lineTo(canvasOne.width, i);
                ctx.stroke();
            }
            ctx.restore();
        }
        //画文本
        function drawText() {
            ctx.fillStyle = 'orange';
            ctx.strokeStyle = 'cornflowerblue';
            ctx.fillText(text, canvasOne.width / 2,
                canvasOne.height / 2);
            ctx.strokeText(text, canvasOne.width / 2,
                cancasOne.height / 2);
        }
        //画中间的小正方形
        function drawCenterSquare() {
            ctx.fillStyle = 'rgba(255,0,0,0.4)';
            ctx.strokeStyle = 'black';
            ctx.fillRect(canvasOne.width / 2 - square_width / 2,
                canvasOne.height / 2 - square_width / 2,
                square_width, square_width);
            ctx.strokeRect(canvasOne.width / 2 - square_width / 2,
                cancasOne.height / 2 - square_width / 2,
                square_width, square_width);
        }
        ctx.font = '128px Helvetica';
        ctx.textBaseline = 'middle'; //设置文本的垂直对齐方式
        ctx.textAlign = 'center';//设置文本的水平对齐方式
        textMetrics = ctx.measureText(text);
        drawGrid('lightgray', 10, 10);
        drawText();
        drawCenterSquare();
    </script>

    2.显示结果:

  • 相关阅读:
    邮票面值设计(codevs 1047) 题解
    练习 : 生成器和模块
    练习 : 数据类型之字符串
    练习 : 函数基础
    练习 : 高阶函数
    练习 : 数据类型之列表
    练习 : 数据类型之元组
    练习 : 数据类型之字典
    练习 : 分支结构和循环结构
    练习 : 变量和运算符
  • 原文地址:https://www.cnblogs.com/tianma3798/p/5563629.html
Copyright © 2011-2022 走看看