【canvas学习笔记四】绘制文字

摘要:
在本节中,我们将学习如何绘制文本。StrokeText在x和y位置笔划文本。有一个可选参数maxWidth来设置最大绘图宽度。文本样式有一些设置文本样式的属性:font=value设置字体、大小等。语法与CSS字体系列属性相同。有几个值,如center和right,与CSS的值相同。TextBaseline=value设置文本对齐的基线。示例functiondraw(){varctx=document.getElementById.getContext;ctx.font='48pxserif';ctx.textBaseline='hanging';ctx.fillText;}functiondraw,它包含文本的当前宽度,单位为像素。

本节我们来学习如何绘制文字。
绘制文字有两个主要的方法:

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属性各个值得对齐的基线:
image
其中说明一下top和bottom对齐的是em square的顶部和底部。em是印刷术里的一种单位,学过CSS的都是知道em这个单位,em就是一个字元的高度。而em square就是一个字元的方块。就像下面这样:image每个字母都占据着一个固定方块的大小。

例子

function draw() {
  var ctx = document.getElementById('canvas').getContext('2d');
  ctx.font = '48px serif';
  ctx.textBaseline = 'hanging';
  ctx.fillText('Hello world', 10, 50);
}

image

function draw() {
  var ctx = document.getElementById('canvas').getContext('2d');
  ctx.font = '48px serif';
  ctx.textBaseline = 'hanging';
  ctx.strokeText('Hello world', 10, 50);
}

image

文字规格

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学习笔记四】绘制文字》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇pspice仿真老不收敛怎么办?netty发送和接收数据handler处理器下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

vue 图片下载到本地,图片保存到本地

  必须同源(访问的网站域名与服务器域名一致)才能下载 1 2 3 4 5 6 downs() {   var alink = document.createElement("a");   alink.href = this.shop.shoppic_url;   alink.download = "pic"; //图片名   al...

Android 自定义View修炼-自定义加载进度动画XCLoadingImageView

一、概述 本自定义View,是加载进度动画的自定义View,继承于ImageView来实现,主要实现蒙层加载进度的加载进度效果。 支持水平左右加载和垂直上下加载四个方向,同时也支持自定义蒙层进度颜色。 直接看下面的效果图吧。 二、效果图 废话不说,先来看看效果图吧~~ 三、实现原理方案 1、自定义View-XCLoadingImageView,继承Ima...

截图:截取当前程序的界面,并保存到bmp图片中。

直接上代码: unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,Clipbrd;type TForm1 = class(TForm) btn1: TButto...

android UI中添加一张图片如何将这张图片中某一部分设为透明的

可以利用canvas画布类,这个类的具体方法可以参看官方api。http://developer.android.com/reference/android/graphics/Canvas.html思路如下:对你图片做一些处理,例如让上部分完全显示,让下部分半透明。1、先将你的原图转化为位图Bitmap;2、先创建canvas画布,大小就是你原图片大小;3...

canvas基础—图形变换

1、canvas转换方法 1.1canvas转换方法 二、canvas实现图形的中心点旋转 step1:获取canva元素并指定canvas的绘图环境 var canvas=document.getElementById('canvas'); var context=canvas.getContext('2d'); step2:在画布(1...

Android图形系统之Surface、SurfaceView、SurfaceHolder及SurfaceHolder.Callback开发实例

原文:Android图形系统之Surface、SurfaceView、SurfaceHolder及SurfaceHolder.Callback之间的联系 Surface是原始图像缓冲区(raw buffer)的一个句柄,而原始图像缓冲区是由屏幕图像合成器(screen compositor)管理的。 Surface本身的作用类似一个句柄,得到了这个句柄就可...