【canvas学习笔记四】绘制文字
本节我们来学习如何绘制文字。
绘制文字有两个主要的方法:
fillText(text, x, y [, maxWidth])
在x, y位置填充文字text,有一个可选参数maxWidth设置最大绘制宽度。
strokeText(text, x, y [, maxWidth])
在x, y位置给文字text描边,有一个可选参数maxWidth设置最大绘制宽度。
文字样式
有一些属性用来设置文字的样式:
font = value
设置字体、大小等,语法和CSS的font-famaliy属性语法一样。
textAlign = value
设置对齐方式。有center、right等几种值,和CSS的值一样。
textBaseline = value
设置文字对齐的基线。有如下几种值: top, hanging, middle, alphabetic, ideographic, bottom。默认值是 alphabetic。
direction = value
设置文字的方向。有如下几种值: ltr, rtl, inherit。默认值是inherit。
下面这张图展示了textBaseline属性各个值得对齐的基线:
其中说明一下top和bottom对齐的是em square的顶部和底部。em是印刷术里的一种单位,学过CSS的都是知道em这个单位,em就是一个字元的高度。而em square就是一个字元的方块。就像下面这样:每个字母都占据着一个固定方块的大小。
例子
function draw() {
var ctx = document.getElementById('canvas').getContext('2d');
ctx.font = '48px serif';
ctx.textBaseline = 'hanging';
ctx.fillText('Hello world', 10, 50);
}
function draw() {
var ctx = document.getElementById('canvas').getContext('2d');
ctx.font = '48px serif';
ctx.textBaseline = 'hanging';
ctx.strokeText('Hello world', 10, 50);
}
文字规格
canvas还提供了一个方法测量字体的宽度:
measureText()
返回一个TextMetrics对象,这个对象包含了文字当前的宽度,单位是像素。
TextMetrics对象还包含很多属性,但是很多还没有得到完全支持,width属性是得到现代浏览器支持的(当然IE8是不行的啦)。
例子
function draw() {
var ctx = document.getElementById('canvas').getContext('2d');
var text = ctx.measureText('foo'); // TextMetrics object
text.width; // 16;
}
Notes
在Gecko内核浏览器或其他应用中,旧版本的一些含有moz前缀的绘图相关API已经弃用了,在这里可以查看。
【canvas学习笔记四】绘制文字的更多相关文章
- canvas学习笔记、小函数整理
http://bbs.csdn.net/topics/391493648 canvas实例分享 2016-3-16 http://bbs.csdn.net/topics/390582151 html5 ...
- 官网实例详解-目录和实例简介-keras学习笔记四
官网实例详解-目录和实例简介-keras学习笔记四 2018-06-11 10:36:18 wyx100 阅读数 4193更多 分类专栏: 人工智能 python 深度学习 keras 版权声明: ...
- Unity3D学习笔记2——绘制一个带纹理的面
目录 1. 概述 2. 详论 2.1. 网格(Mesh) 2.1.1. 顶点 2.1.2. 顶点索引 2.2. 材质(Material) 2.2.1. 创建材质 2.2.2. 使用材质 2.3. 光照 ...
- C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻
前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往往要 ...
- IOS学习笔记(四)之UITextField和UITextView控件学习
IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...
- java之jvm学习笔记四(安全管理器)
java之jvm学习笔记四(安全管理器) 前面已经简述了java的安全模型的两个组成部分(类装载器,class文件校验器),接下来学习的是java安全模型的另外一个重要组成部分安全管理器. 安全管理器 ...
- Learning ROS for Robotics Programming Second Edition学习笔记(四) indigo devices
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...
- Typescript 学习笔记四:回忆ES5 中的类
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- ES6学习笔记<四> default、rest、Multi-line Strings
default 参数默认值 在实际开发 有时需要给一些参数默认值. 在ES6之前一般都这么处理参数默认值 function add(val_1,val_2){ val_1 = val_1 || 10; ...
随机推荐
- tableau分布式添加节点
参考: 两节点的安装:https://zhuanlan.zhihu.com/p/44732932https://help.tableau.com/current/server-linux/zh-cn/ ...
- OpenTSDB查询和写入毫秒级数据
由于OpenTSDB没有支持Java的SDK进行调用,所以基于Java开发OpenTSDB的调用将要依靠HTTP请求的方式进行. 1.毫秒级数据写入 /api/put:通过POST方式插入JSON格式 ...
- Winform CheckBox组,先横向排列,后纵向排列,点击文字,改变Checkbox的状态的方法
开始选用的CheckedListBox控件,不能实现,改为使用ListView控件,可以满足需求.操作步骤如下: 1.将ListView的属性View改为SmallIcon. 2.CheckBox ...
- vsftpd一些常用配置
常用的全局配置 --设置监听的IP地址 listen_asspress=192.168.4.1 --设置监听FTP服务的端口号 listen_port=21 --是否允许下载文件 download_e ...
- Centos下安装nc命令工具安装以及使用
1)netcat(nc)是一个简单而有用的工具,被誉为网络安全界的“瑞士军刀”,不仅可以通过使用TCP或UDP协议的网络连接读写数据,同时还是一个功能强大的网络调试和探测工具,能够建立你需要的几乎所有 ...
- webstorm 如何去掉下划线
当前webstorm版本:2018.3.5 百度了也没找到解决办法,最终结合了和群友的给的位置,找到了修改地方,只能怪版本迭代太快了,要适应 右上角Effects点掉就可以了
- java多图片上传
2017-09-16 <script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2 ...
- vue项目兼容es6语法跟IE浏览器
要安装babel-polyfill和es6-promise.用来兼容ie和es6: 附赠链接下载:https://babeljs.io/docs/en/6.26.3/babel-polyfill:ht ...
- java面试题全集(中)
这部分主要是与Java Web和Web Service相关的面试题. 96.阐述Servlet和CGI的区别? 答:Servlet与CGI的区别在于Servlet处于服务器进程中,它通过多线程方式运行 ...
- asp.net WebApi WebApiConfig.cs Web API 配置和服务
public static void Register(HttpConfiguration config) { ............................... var jsonSett ...