[js高手之路] html5 canvas系列教程 - 文本样式(strokeText,fillText,measureText,textAlign,textBaseline)

接着上文线条样式[js高手之路] html5 canvas系列教程 - 线条样式(lineWidth,lineCap,lineJoin,setLineDash)继续.

canvas提供两种输出文本的方式:

strokeText:描边文本

fillText:填充文本

fillStyle配合fillText使用,strokeStyle配合strokeText使用

strokeText用法:

cxt.strokeText( text, x,  y, [maxwidth] )

text:需要输出的文本内容

x:最左边的文本输出的横坐标位置

y:最左边的文本的 左下角的纵坐标

maxWidth:这个是可选参数,意思就是文本最多能占用maxWidth这么宽,如果文本的实际宽度比maxWidth宽,就会有一种压缩(被挤扁)的效果。

 1 <meta charset=‘utf-8‘ />
 2 <style>
 3 body {
 4     background: #000;
 5 }
 6 #canvas{
 7     background:white;
 8 }
 9 </style>
10 <script>
11 window.onload = function(){
12     var oCanvas = document.querySelector( "#canvas" ),
13         oGc = oCanvas.getContext( ‘2d‘ ),
14
15         text = ‘跟着ghostwu学习canvas‘;
16         oGc.font = ‘bold 30px 微软雅黑‘;
17         oGc.strokeStyle = ‘#09f‘;
18         oGc.strokeText( text, 100, 100 );
19         oGc.strokeText( text, 100, 200, 200 );
20 }
21 </script>
22 </head>
23 <body>
24 <canvas id="canvas" width="600" height="300"></canvas>
25 </body>

fillText:填充文本.

text = ‘跟着ghostwu学习canvas‘;

oGc.font = ‘bold 30px 微软雅黑‘;

oGc.fillStyle = ‘#09f‘;

oGc.fillText( text, 100, 100 );

oGc.fillText( text, 100, 200, 200 );

measureText:获取文本的宽度(长度),它返回的是一个对象,对象有一个属性width,就是文本的长度了.

cxt.measureText( text ).width

输出一段水平居中的文本

 1 <meta charset=‘utf-8‘ />
 2 <style>
 3 body {
 4     background: #000;
 5 }
 6 #canvas{
 7     background:white;
 8 }
 9 </style>
10 <script>
11 window.onload = function(){
12     var oCanvas = document.querySelector( "#canvas" ),
13         oGc = oCanvas.getContext( ‘2d‘ ),
14         width = oCanvas.width,
15         text = ‘跟着ghostwu学习canvas‘;
16
17         oGc.font = ‘bold 30px 微软雅黑‘;
18         oGc.fillStyle = ‘#09f‘;
19         oGc.fillText( text, ( width - oGc.measureText( text ).width ) / 2, 100 );
20 }
21 </script>
22 </head>
23 <body>
24 <canvas id="canvas" width="600" height="300"></canvas>
25 </body>

font属性跟css是一样的用法

cxt.font = "font-style font-weight font-size/line-height font-family"

textAlign文本水平对齐方式

cxt.textAlign = ‘start/end/left/right/center‘;

start跟left差不多,end跟right差不多.

 1 <meta charset=‘utf-8‘ />
 2 <style>
 3 body {
 4     background: #000;
 5 }
 6 #canvas{
 7     background:white;
 8 }
 9 </style>
10 <script>
11 window.onload = function(){
12     var oCanvas = document.querySelector( "#canvas" ),
13         oGc = oCanvas.getContext( ‘2d‘ ),
14         width = oCanvas.width,
15         height = oCanvas.height,
16         text = ‘跟着ghostwu学习canvas‘;
17
18         oGc.font = ‘bold 16px 微软雅黑‘;
19         oGc.fillStyle = ‘#09f‘;
20
21         var xPos = ( width ) / 2;
22         oGc.moveTo( xPos, 0 );
23         oGc.lineTo( xPos, height );
24         oGc.stroke();
25
26         oGc.textAlign = ‘start‘;
27         oGc.fillText( text, 300, 30 );
28         oGc.textAlign = ‘left‘;
29         oGc.fillText( text, 300, 60 );
30         oGc.textAlign = ‘right‘;
31         oGc.fillText( text, 300, 90 );
32         oGc.textAlign = ‘end‘;
33         oGc.fillText( text, 300, 120 );
34         oGc.textAlign = ‘center‘;
35         oGc.fillText( text, 300, 150 );
36 }
37 </script>
38 </head>
39 <body>
40 <canvas id="canvas" width="600" height="300"></canvas>
41 </body>

textBaseline:设置文本垂直方向的对齐方式

cxt.textBaseline = ‘属性值‘

常见的属性值: alphabetic, top, middle, bottom等

跟上面的textAlign的用法差不多,这个不是很常用

时间: 2024-12-14 20:37:58

[js高手之路] html5 canvas系列教程 - 文本样式(strokeText,fillText,measureText,textAlign,textBaseline)的相关文章

[js高手之路] html5 canvas系列教程 - 图片操作(drawImage,clip,createPattern)

接着上文[js高手之路] html5 canvas系列教程 - 文本样式(strokeText,fillText,measureText,textAlign,textBaseline)继续,本文介绍的内容是canvas开发,特别是游戏中,比较常用的内容:图片处理.在游戏中的资源大多数都是加载图片. 一.canvas怎么加载图片? canvas提供3种图片加载的API调用方式. drawImage( image, dx, dy ) drawImage( image, dx, dy, dw, dh

[js高手之路] html5 canvas系列教程 - 像素操作(反色,黑白,亮度,复古,蒙版,透明)

接着上文[js高手之路] html5 canvas系列教程 - 状态详解(save与restore),相信大家都应该玩过美颜功能,而我们今天要讲的就是canvas强大的像素处理能力,通过像素处理,实现反色,黑白,亮度,复古,蒙版,透明等美颜效果. getImageData:获取一张图片的像素数据 cxt.getImageData( x, y, width, height ) x:图片所在的x坐标 y: 图片所在的y坐标 width,height 要获取的像素区域 返回值是一个对象,对象包括一个d

[js高手之路] html5 canvas系列教程 - arcTo(弧度与二次,三次贝塞尔曲线以及在线工具)

之前,我写了一个arc函数的用法:[js高手之路] html5 canvas系列教程 - arc绘制曲线图形(曲线,弧线,圆形). arcTo: cxt.arcTo( cx, cy, x2, y2, 半径 ) cx,cy表示控制点的坐标,x2,y2表示结束点的坐标,如果我们想画一条弧线,需要提供3个 http://pic.cnhubei.com/space.php?uid=4593&do=album&id=1092946http://pic.cnhubei.com/space.php?ui

[js高手之路] html5 canvas动画教程 - 实时获取鼠标的当前坐标

有了前面的canvas基础之后,现在开始就精彩了,后面写的canvas教程都是属于综合应用,前面已经写了常用的canvas基础知识,参考链接如下: [js高手之路] html5 canvas系列教程 - 认识canvas以及基本使用方法 [js高手之路] html5 canvas系列教程 - 掌握画直线图形的常用API [js高手之路] html5 canvas系列教程 - 开始路径beginPath与关闭路径closePath详解 [js高手之路] html5 canvas系列教程 - arc

[js高手之路] html5 canvas系列教程 - 开始路径beginPath与关闭路径closePath详解

路径在canvas绘图中,经常被用到,是一个非常重要的概念. 比如:我们要在canvas画出3条直线,要求用不同的颜色加以区分. 1 <style> 2 body { 3 background: #000; 4 } 5 #canvas{ 6 background:white; 7 } 8 </style> 9 <script> 10 window.onload = function(){ 11 var oCanvas = document.querySelector(

[js高手之路]深入浅出webpack系列1-安装与基本打包用法和命令参数

webpack,我想大家应该都知道或者听过,Webpack是前端一个工具,可以让各个模块进行加载,预处理,再进行打包.现代的前端开发很多环境都依赖webpack构建,比如vue官方就推荐使用webpack.废话不多说,我们赶紧开始吧. 第一步.安装webpack 新建文件夹webpack->再在webpack下面新建demo->命令行切换到demo目录,使用npm init --yes 初始化项目的package.json文件,然后执行npm install webpack --save-de

[js高手之路] html5新增的定时器requestAnimationFrame实战进度条

在requestAnimationFrame出现之前,我们一般都用setTimeout和setInterval,那么html5为什么新增一个requestAnimationFrame,他的出现是为了解决什么问题? 优势与特点: 1)requestAnimationFrame会把每一帧中的所有DOM操作集中起来,在一次重绘或回流中就完成,并且重绘或回流的时间间隔紧紧跟随浏览器的刷新频率 2)在隐藏或不可见的元素中,requestAnimationFrame将不会进行重绘或回流,这当然就意味着更少的

[js高手之路]深入浅出webpack教程系列9-打包图片(file-loader)用法

[js高手之路]深入浅出webpack教程系列索引目录: [js高手之路]深入浅出webpack教程系列1-安装与基本打包用法和命令参数 [js高手之路]深入浅出webpack教程系列2-配置文件webpack.config.js详解(上) [js高手之路]深入浅出webpack教程系列3-配置文件webpack.config.js详解(下) [js高手之路]深入浅出webpack教程系列4-插件使用之html-webpack-plugin配置(上) [js高手之路]深入浅出webpack教程系

[js高手之路] es6系列教程 - 迭代器,生成器,for...of,entries,values,keys等详解

接着上文[js高手之路] es6系列教程 - 迭代器与生成器详解继续. 在es6中引入了一个新的循环结构for ....of, 主要是用来循环可迭代的对象,那么什么是可迭代的对象呢? 可迭代的对象一般都有Symbol.iterator属性,你可以在控制台中用console.dir打印数组,Map,Set,在他们的原型对象(prototype)上面就能找到.这个属性与迭代器密切相关,通过该函数可以返回一个迭代器,下文,我会举一个例子.一般来说所有的集合对象(数组,Set,Map 以及字符串)都是可