Canvas 文字的对齐方式(textAlign(),textBaseline())

本文探讨了Canvas API中用于文字对齐的属性`textAlign`和`textBaseline`,通过实例代码展示了如何在画布的四个角精确地绘制文字,为网页图形设计提供灵活的文字布局方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


demo.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        canvas {
            border:1px solid red;
        }
    </style>
</head>
<body>
    <canvas id="cvs" width="500" height="500"></canvas>
    <script>
        var cvs = document.getElementById('cvs');
        var ctx = cvs.getContext('2d');

        ctx.font = '2em 微软雅黑';   //只有设置字体样式(微软雅黑)后,大小才会生效。

        /*
        * 设置文字的水平对其方式:
        * ctx.textAlign = 'left || start' 、 'right || end' 、 'center'
        * 默认值为start。
        * */

        /*
        * 设置文字的垂直对其方式:
        * ctx.textBaseline = 'top' 、'bottom'、'middle'、'alphabetic'、'hanging'、'ideographic'
        * 默认值为alphabetic。
        * */

        ctx.textAlign = 'left';
        ctx.textBaseline = 'ideographic';  //和'bottom'效果一样。
        ctx.fillText( '咯咯咯咯咯咯', 100, 200 );

        // 绘制文字的参考点
        ctx.beginPath();
        ctx.arc( 100, 200, 4, 0, Math.PI * 2 );
        ctx.fill();
    </script>
</body>
</html>


在画布四个角绘制文字.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        canvas {
            border:1px solid red;
        }
    </style>
</head>
<body>
    <canvas id="cvs" width="500" height="500"></canvas>
    <script>
        var cvs = document.getElementById('cvs');
        var ctx = cvs.getContext('2d');

        ctx.font = '28px 微软雅黑';  //只有设置字体样式(微软雅黑)后,大小才会生效。
        ctx.fillStyle = 'deeppink';

        // 在画布的左上角绘制一段文字
        ctx.textAlign = 'left';
        ctx.textBaseline = 'top';
        ctx.fillText( '左上角', 0, 0 );

        // 在画布的右上角绘制一段文字
        ctx.textAlign = 'right';
        ctx.textBaseline = 'top';
        ctx.fillText( '右上角', cvs.width, 0 );

        // 在画布的左下角绘制一段文字
        ctx.textAlign = 'left';
        ctx.textBaseline = 'bottom';
        ctx.fillText( '左下角', 0, cvs.height );

        // 在画布的右下角绘制一段文字
        ctx.textAlign = 'right';
        ctx.textBaseline = 'bottom';
        ctx.fillText( '右下角', cvs.width, cvs.height );
    </script>
</body>
</html>



### 如何在HTML5 Canvas上绘制或操作文字 要在HTML5 Canvas上绘制文字,主要依赖于`CanvasRenderingContext2D`对象中的方法和属性。以下是实现这一功能的关键技术细节: #### 创建Canvas并获取上下文 为了能够在页面中使用Canvas API,需要先创建一个`<canvas>`元素,并通过JavaScript访问其2D绘图上下文。这一步骤可以通过以下代码完成[^1]: ```javascript var canvas = document.getElementById("canvas"); var ctx = canvas.getContext("2d"); ``` 如果动态生成Canvas,则可以采用如下方式: ```javascript var canvas = document.createElement("canvas"); document.body.appendChild(canvas); var ctx = canvas.getContext("2d"); ``` #### 设置文字样式 Canvas提供了多种设置文字样式的选项,这些选项能够调整字体大小、颜色以及其他视觉效果。常用的属性包括但不限于: - `font`: 定义用于渲染文本的CSS字形描述符。 - `textAlign`: 控制水平方向上的对齐方式(如`start`, `end`, `left`, `right`, 或者`center`)。 - `textBaseline`: 设定垂直基线位置。 例如,要定义一种特定的文字风格,可执行下列命令[^3]: ```javascript ctx.font = "italic bold 48px serif"; // 斜体加粗的serif字体,字号为48像素 ctx.fillStyle = "#FF0000"; // 填充颜色设为红色 ctx.textAlign = "center"; // 文本居中显示 ctx.textBaseline = "middle"; // 中心作为基线 ``` #### 绘制填充文字与轮廓文字 一旦设置了必要的样式参数之后,就可以调用相应的方法来实际呈现文字了。有两种基本的方式可以在画布上展示文字——填充实心字符或者仅仅描绘边框线条。 对于实心填充型态下的文字输出而言,应该运用到的是`fillText()`函数;而针对仅勾勒外廓的情况则需借助`strokeText()`方法: 示例演示如何利用这两种模式分别打印字符串"Hello World!"至指定坐标(75,100): ```javascript // Fill text example ctx.fillText("Hello World!", 75, 100); // Stroke text example ctx.strokeStyle = "#00FFFF"; ctx.strokeText("Hello World!", 75, 125); ``` 以上就是关于怎样基于HTML5标准,在网页内的Canvas组件之上进行文字处理的基础教程概述。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值