33 canvas绘制文本

33 canvas绘制文本

1 绘制文本

语法

canvas 提供了两种方法来渲染文本:
		fillText(text, x, y)
			在指定的(x,y)位置填充指定的文本
		strokeText(text, x, y)
			在指定的(x,y)位置绘制文本边框

示例

	<head>
		<meta charset="UTF-8">
		<title>18_绘制文本</title>
		<style>
			#test{
				position: absolute;
				left: 0;
				right: 0;
				top: 0;
				bottom: 0;
				margin: auto;
				background-color: #BBAAFF;
			}
		</style>
	</head>
	<body>
		<canvas id="test" width="300" height="300">您的浏览器不支持canvas,请升级</canvas>
		<script type="application/javascript">
			var canvas = document.querySelector("#test");
			if(canvas.getContext){
				var ctx = canvas.getContext("2d");
				ctx.fillText("HELLO",50,50);
				ctx.strokeText("HELLO",50,100);
			}
		</script>
	</body>

效果

2 设置文本样式

语法

	font = value
		当前我们用来绘制文本的样式. 这个字符串使用和 CSS font 属性相同的语法. 
		默认的字体是 10px sans-serif。
		font属性在指定时,必须要有大小和字体 缺一不可
		
	textAlign = value
		文本对齐选项. 可选的值包括: left, right  center. 
		left
			文本左对齐。
		right
			文本右对齐。
		center
			文本居中对齐。
			这里的textAlign="center"比较特殊。textAlign的值为center时候
			文本的居中是基于你在fillText的时候所给的x的值,
			也就是说文本一半在x的左边,一半在x的右边
		
	
	textBaseline = value
		描述绘制文本时,当前文本基线的属性。
		top
			文本基线在文本块的顶部。
		middle
			文本基线在文本块的中间。
		bottom
			文本基线在文本块的底部。

解析

示例

	<head>
		<meta charset="UTF-8">
		<title>18_绘制文本</title>
		<style>
			#test{
				position: absolute;
				left: 0;
				right: 0;
				top: 0;
				bottom: 0;
				margin: auto;
				background-color: #BBAAFF;
			}
		</style>
	</head>
	<body>
		<canvas id="test" width="300" height="300">您的浏览器不支持canvas,请升级</canvas>
		<script type="application/javascript">
			var canvas = document.querySelector("#test");
			if(canvas.getContext){
				var ctx = canvas.getContext("2d");
				// 设置字体
				ctx.font = "40px sans-serif";
				// 设置文本对齐方式
				ctx.textAlign = "center";
				// 设置文本基线
				ctx.textBaseline = "middle";
				ctx.fillText("HELLO",100,50);
				ctx.strokeText("HELLO",100,100);
			}
		</script>

效果

3 获取文本宽度

语法

measureText() 方法返回一个 TextMetrics 对象,包含关于文本尺寸的信息(例如文本的宽度,没有高度)

示例

	<head>
		<meta charset="UTF-8">
		<title>20_文本居中</title>
		<style>
			#test{
				position: absolute;
				left: 0;
				right: 0;
				top: 0;
				bottom: 0;
				margin: auto;
				background-color: #BBAAFF;
			}
		</style>
	</head>
	<body>
		<canvas id="test" width="300" height="300">您的浏览器不支持canvas,请升级</canvas>
		<script type="application/javascript">
			var canvas = document.querySelector("#test");
			if(canvas.getContext){
				var ctx = canvas.getContext("2d");
				// 设置字体
				ctx.font = "40px sans-serif";
				// 设置文本基线
				ctx.textBaseline = "top";
				var textObj = ctx.measureText("HELLO");
				ctx.fillText("HELLO",(canvas.width - textObj.width)/2 , (canvas.height - 40)/2);
			}
		</script>
	</body>

效果

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丨Anna丨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值