Canvas 非线性图形(一):文本
2024-09-07 21:21:20
基础
画布除了绘制图形以外还可以绘制文本,画布中的文本可以设置字体大小、字体格式、对齐方式(横向和纵向对齐方式),并且还可以制作很炫酷的文本,比如渐变文字。
文本有以下三个属性,控制文本的字体大小、字体格式和对齐方式:
属性 | 描述 |
---|---|
font | 设置或返回文本内容的当前字体属性 |
textAlign | 设置或返回文本内容的当前对齐方式 |
textBaseline | 设置或返回在绘制文本时使用的当前文本基线 |
完成文本的绘制有 fillText 和 strokeText:
方法 | 描述 |
---|---|
fillText(text, x, y) | 在画布上绘制有填充文本 |
strokeText(text, x, y) | 在画布上绘制无填充文本 |
measureText(text) | 返回包含指定文本宽度对象 |
方法
fillText
fillText 用于绘制非镂空的文本,即文字是完全填充的:
ctx.beginPath();
ctx.font = '25px Georgia';
ctx.fillText('Hello World!', 150, 150);
strokeText
strokeText 用于绘制镂空的文本:
ctx.beginPath();
ctx.font = '25px Georgia';
ctx.strokeText('Hello World!', 150, 150);
属性
textAlign
文本对于 Y 轴的对齐方式,用 textAlign 设置,有以下五个属性值:
属性值 | 描述 |
---|---|
left | 文字左对齐 |
center | 文字中间对齐 |
right | 文字右对齐 |
start | 文字左对齐,与 left 等效 |
end | 文字右对齐,与 right 等效 |
ctx.font = '15px Georgia';
ctx.beginPath()
ctx.textAlign = 'start'; // 文字左对齐,与 left 等效
ctx.fillText('(start)Hello World!', 150, 20);
ctx.beginPath()
ctx.textAlign = 'left'; // 文字左对齐,与 start 等效
ctx.fillText('(left)Hello World!', 150, 80);
ctx.beginPath()
ctx.textAlign = 'center'; // 文字句中对齐
ctx.fillText('(center)Hello World!', 150, 140);
ctx.beginPath()
ctx.textAlign = 'end'; // 文字右对齐,与 right 等效
ctx.fillText('(end)Hello World!', 150, 200);
ctx.beginPath()
ctx.textAlign = 'right'; // 文字右对齐,与 end 等效
ctx.fillText('(right)Hello World!', 150, 260);
textBaseline
textAlign 代表文本以 Y 轴的对齐方式,textBaseline 就是文本以 X 轴的对齐方式,同样也有五个属性值,也有两个属性值互为等效:
属性值 | 描述 |
---|---|
top | 位于 Y 轴的下面,顶在 Y 轴 |
bottom | 位于 Y 轴的上面,文本底部与 Y 轴贴合 |
middle | 位于 Y 轴的中间,Y 轴穿过文本 |
alphabetic | 与 bottom 等效 |
hanging | 与 top 等效 |
最新文章
- Oracle数据库升级(10.2.0.4->;11.2.0.4)
- Web前端资源汇总
- C#设计模式系列:单一职责原则(Single Responsibility Principle)
- Maven设置代理服务器
- oracle 的 nubmer 类型与 C# 的 float double decimal 对应关系
- 电脑开启wifi功能
- 大熊君大话NodeJS之------Buffer模块
- [团队项目]SCRUM项目4.0
- ***CI新增记录成功后的返回值判断,是用isset还是empty
- android网络编程--从网络下载图片,并保存到内存卡
- JS判断手机浏览器
- return View()
- MyBatis的学习总结四:实现关联表查询【参考】
- View处理常用方法封装
- Round#534 div.2-B Game with string
- java序列化和反序列化中的serialVersionUID有啥用
- Busybox构建根文件系统和制作Ramdisk
- javascript中startswith和endsWidth 与 es6中的 startswith 和 endsWidth
- Tomcat利用MSM实现Session共享方案解说
- oracle 创建自定义的流水号
热门文章
- Seata源码分析——SessionManager
- go-zero 微服务实战系列(一、开篇)
- Code Forces 1367A Sorting Parts 题解
- JuiceFS V1.0 RC1 发布,大幅优化 dump/load 命令性能, 深度用户不容错过
- 聊聊 C# 和 C++ 中的 泛型模板 底层玩法
- [安洵杯 2019]easy_web-1
- python:**也不过如此嘛,这不也被我采集下来啦~
- colab运行.py文件
- 从解析HTML开始,破解页面渲染时间长难题
- 攻防世界MISC进阶区 61-63