在canvas中通过textAlign可以设置文本的对齐:

其中left为左对齐,center为居中对齐,right为右对齐。

程序运行截图如下:

源码如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><canvas id="canvas" style="border: 1px solid #aaa; display: block; margin: 50px auto;">当前浏览器不支持canvas
</canvas><script>window.onload = function(){let canvas = document.getElementById("canvas");canvas.width = 800;canvas.height = 800;let context = canvas.getContext("2d");context.fillStyle = "#058";context.font = "bold 40px sans-serif";context.textAlign = "left";context.fillText("textAlign = left", 400, 100);context.textAlign = "center";context.fillText("textAlign = left", 400, 200);context.textAlign = "right";context.fillText("textAlign = left", 400, 300);//baselinecontext.strokeStyle = "#888";context.moveTo(400, 0);context.lineTo(400, 800);context.stroke();}</script></body>
</html>

上面是指水平对齐,下面记录下垂直对齐

通过调用textbaseline函数进行垂直对齐,其中top为向上对齐,middle为居中对齐,bottom为底部对齐,默认情况下是alphabetic,还有2给参数一个是ideographic为中文,hanging为印度文的。

下面简单记录下。

程序运行截图如下:

源码如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><canvas id="canvas" style="border: 1px solid #aaa; display: block; margin: 50px auto;">当前浏览器不支持canvas
</canvas><script>window.onload = function(){let canvas = document.getElementById("canvas");canvas.width = 800;canvas.height = 800;let context = canvas.getContext("2d");context.fillStyle = "#058";context.font = "bold 40px sans-serif";context.textBaseline = "top";context.fillText("中文ABC12345@!#@¥%%%*&", 40, 100);drawBaseline(context, 100);context.textBaseline = "middle";context.fillText("中文ABC12345@!#@¥%%%*&", 40, 200);drawBaseline(context, 200);context.textBaseline = "bottom";context.fillText("中文ABC12345@!#@¥%%%*&", 40, 300);drawBaseline(context, 300);context.textBaseline = "ideographic";context.fillText("中文ABC12345@!#@¥%%%*&", 40, 400);drawBaseline(context, 400);context.textBaseline = "hanging";context.fillText("中文ABC12345@!#@¥%%%*&", 40, 500);drawBaseline(context, 500);}function drawBaseline(cxt, h){let width = cxt.canvas.width;cxt.save();cxt.strokeStyle = "#899";cxt.lineWidth = 2;cxt.moveTo(0, h);cxt.lineTo(width, h);cxt.stroke();cxt.restore();}</script></body>
</html>

下面是文本的度量

再canvas中通过measureText(string).width可以获取其长度。

程序运行截图如下:

源码如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><canvas id="canvas" style="border: 1px solid #aaa; display: block; margin: 50px auto;">当前浏览器不支持canvas
</canvas><script>window.onload = function(){let canvas = document.getElementById("canvas");canvas.width = 800;canvas.height = 800;let context = canvas.getContext("2d");context.fillStyle = "#058";context.font = "bold 40px sans-serif";let stringValue = "中文ABC12345@!#@¥%%%*&";context.fillText(stringValue, 40, 100);let textWidth = context.measureText(stringValue).width;context.fillText("字符串宽度为:" + textWidth + "px", 40, 200);}</script></body>
</html>

canvas笔记-文本水平垂直对齐与度量相关推荐

  1. CSS基础学习--17 布局 - 水平 垂直对齐

    一.元素居中对齐 要水平居中对齐一个元素(如 <div>), 可以使用 margin: auto;.设置到元素的宽度将防止它溢出到容器的边缘.元素通过指定宽度,并将两边的空外边距平均分配: ...

  2. canvas笔记-文本(fillText)旋转(rotate)

    这里fillText直接使用rotate会有问题.估计是旋转中心有问题. 正确的逻辑为: 先使用translate移动中心点在文本起始位置,如何在0,0处fillText即可. 如果要在字符串中心进行 ...

  3. CSS span标签中文字水平垂直对齐

    1.text-align: center--水平居中 仅对文字.图片.按钮等行内元素有效(display设置为inline或inline-block等)进行水平居中 2.height:60px;lin ...

  4. canvas旋转,水平垂直镜像

    //旋转镜像ctx.setTransform(1, 0, 0, 1, 0, 0); //恢复坐标系ctx.translate(location[i].left -component.show.Posi ...

  5. html纵向文本,html – 垂直对齐CSS圈中多行的文本

    我创建了一个包含文本的圆圈,文本需要始终居中.很简单,我已经找到了很多例子,例如使用line-height在一行中使用单词. 我的问题是文本有时会包含一行,有时是两行,有时是三行,我无法让它工作. 有 ...

  6. 如何给textbox中的文本设置垂直对齐,以及右对齐

    应用style="text-align:right" 如:<textarea name="textarea" style="text-align ...

  7. html canvas text 居中,HTML5 Canvas Text文本居中实例

    canvas> varcancasOne=document.getElementById('canvasOne');varctx=cancasOne.getContext('2d');varte ...

  8. HTML5 Canvas Text文本居中实例

    1.代码: <canvas width="700" height="300" id="canvasOne" class="c ...

  9. canvas绘制文本文本的

    在canvas中绘制文本 ​ canvas 提供了两种方法来渲染文本: ​ fillText(text, x, y) ​ 在指定的(x,y)位置填充指定的文本 <!DOCTYPE html> ...

最新文章

  1. (24):(行为型模式) Visitor 访问者模式
  2. mysql tomcat 自动重连_基于tomcat+mysql的c/s模式下的系统自动更新
  3. javaScript的DOM(一)
  4. DEF CON 专题 | 溜门撬锁,暗黑市集,带你看世界最大的黑客狂欢
  5. scrapy mysql 报错_scrapy爬数据存mysql报错
  6. 如何在ASP.NET Core 中快速构建PDF文档
  7. java调用外联服务用xml,Spring IOC 依赖注入的两种方式:XML和注解
  8. DWR实现服务器端向客户端推送消息
  9. 腾讯信鸽-百亿级别的消息推送背后的技术了解下
  10. 小米手机自带计算机不能用怎么解决,如果小米手机无法进入系统怎么办?
  11. mysql netbeans_关于netbeans与mysql连接问题
  12. 【Cubieboard2】配置编译内核支持SPI全双工通信驱动
  13. mysql count sending data_mysql查询sending data占用大量时间的问题处理
  14. git reset --hard HEAD~X误删恢复操作
  15. JAVA中简单图形界面的创建
  16. Linux环境安装+阿里云+jdk8
  17. php股票t 0,股票T+0是什么意思?如何看懂股票T+0?
  18. cdr文字内容显示不出来_电脑装的字体cdr里面不显示怎么办
  19. 运营——线上引流9大方法
  20. oracle设置session空闲时间超时断开

热门文章

  1. Xamarin.Android开发实践(十四)
  2. 项目实施管理之系统演示
  3. IBM云计算带我们进入新服务经济时代
  4. 知乎神回复:普通程序员一天的工作生活是怎样的?网友实名羡慕!
  5. 2020年的风口来了!传统企业如何做数字化转型?
  6. 也可以让生命发出耀眼的飞鸽传书光芒
  7. 飞秋 一个程序员的老作品。
  8. 163相册密码破解秘诀
  9. 气死N个女孩子的图片
  10. 从C++到.NET 揭开多态的面纱