canvas之文本

Posted 前端技术博文

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了canvas之文本相关的知识,希望对你有一定的参考价值。

一、绘制文本

使用 canvas 绘制文本,重要的属性和方法如下:

  • font - 定义字体

  • fillText(text,x,y) - 在 canvas 上绘制实心的文本

  • strokeText(text,x,y) - 在 canvas 上绘制空心的文本

示例:

canvas之文本
<body>
<canvas id="cava1" width="300" height="150"></canvas>
</body>
<script>
   function draw() {
        var canvas=document.getElementById("cava1");
        var ctx=canvas.getContext("2d");  
      //实心文本
       ctx.font = "48px serif";
       ctx.fillText("Hello world", 10, 50);
       //空心文本
       ctx.font = "48px serif";
       ctx.strokeText("Hello world", 20, 120);
   }
   draw();
</script>

二、样式文本

有更多的属性可以让你改变canvas显示文本的方式:

font = value
    当前我们用来绘制文本的样式. 这个字符串使用和 CSS font 属性相同的语法. 默认的字体是 10px sans-serif。
textAlign = value
    文本对齐选项. 可选的值包括:start, end, left, right or center. 默认值是 start。
textBaseline = value
    基线对齐选项. 可选的值包括:top, hanging, middle, alphabetic, ideographic, bottom。默认值是 alphabetic。
direction = value
    文本方向。可能的值包括:ltr, rtl, inherit。默认值是 inherit。

(1)font 字体样式

CanvasRenderingContext2D.font 是 Canvas 2D API 描述绘制文字时,当前字体样式的属性。
语法:ctx.font = value;

(2)textAlign文本的对齐方式

CanvasRenderingContext2D.textAlign 是 Canvas 2D API 描述绘制文本时,文本的对齐方式的属性。
语法:ctx.textAlign = "left" || "right" || "center" || "start" || "end";
注意:该对齐是基于CanvasRenderingContext2D.fillText方法的x的值。

这里的textAlign="center"比较特殊。textAlign的值为center时文本的居中是基于fillText所给x的值,就是说文本一半在x的左边,一半在x的右边。
想让文本在整个canvas居中,需要将fillText的x值设置成canvas的宽度的一半。

direction属性会对此属性产生影响。
如果direction属性设置为ltr,则left和start的效果相同,right和end的效果相同;
如果direction属性设置为rtl,则left和end的效果相同,right和start的效果相同。

有效值:

left
    文本左对齐。
right
    文本右对齐。
center
    文本居中对齐。
start
    文本对齐界线开始的地方 (左对齐指本地从左向右,右对齐指本地从右向左)。
end
    文本对齐界线结束的地方 (左对齐指本地从左向右,右对齐指本地从右向左)。

(3)textBaseline 文本基线,决定文字垂直方向的对齐方式。

CanvasRenderingContext2D.textBaseline 是 Canvas 2D API 描述绘制文本时,当前文本基线的属性。
语法:ctx.textBaseline = "top" || "hanging" || "middle" || "alphabetic" || "ideographic" || "bottom";

有效值:

top
    文本基线在文本块的顶部。
hanging
    文本基线是悬挂基线。
middle
    文本基线在文本块的中间。
alphabetic
    文本基线是标准的字母基线。
ideographic
    文字基线是表意字基线;如果字符本身超出了alphabetic 基线,那么ideograhpic基线位置在字符本身的底部。
bottom
    文本基线在文本块的底部。 与 ideographic 基线的区别在于 ideographic 基线不需要考虑下行字母。

(4)direction 当前文本方向(此功能某些浏览器尚在开发中)

CanvasRenderingContext2D.direction 是Canvas 2D API 用来在绘制文本时,描述当前文本方向的属性。
语法:ctx.direction = "ltr" || "rtl" || "inherit";

有效值:

ltr
    文本方向从左向右。
rtl
    文本方向从右向左。
inherit
    根据情况继承 <canvas> 元素或者 Document 。

参考:路径-CanvasAPI|MDN:https://link.jianshu.com/?t=https%3A%2F%2Fdeveloper.mozilla.org%2Fzh-CN%2Fdocs%2FWeb%2FAPI%2FCanvas_API


canvas之文本
canvas之文本



以上是关于canvas之文本的主要内容,如果未能解决你的问题,请参考以下文章

canvas文本自动换行

自己定义View时,用到Paint Canvas的一些温故,简单的帧动画(动画一 ,&quot;掏粪男孩Gif&quot;顺便再提提onWindowFocusChanged)(代码片段

canvas之渐变

T4模板:T4模板之菜鸟篇

T4模板之菜菜鸟篇

在 NavigationUI 的同一主机活动上传递数据并更新片段文本/按钮