欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

html5 canvas 文字居中对齐

程序员文章站 2022-07-08 19:54:23
[color=eight:25px]html部门 [color=eight:25px]

[color=eight:25px]html部门

[color=eight:25px]<canvas id="myCanvas"></canvas>

[color=eight:25px]css部门

[color=eight:25px]canvas{width:1000px;height:700px;}

[color=eight:25px]js部门
初初的根本格局:
[color=eight:25px]window.onload=function(){var canvas=document.getElementById('myCanvas');
var context=canvas.getContext('2d');
//前面书写画绘号令
context.beginPath();//开端画绘的声明
context.moveTo(x,y);//界说出发点,能够理解为将绘笔挪动迪苹个位置
context.lineTo(x,y);//界说一个起点
context.lineWidth=5;//界说线条宽度
context.strokeStyle='blue';//界说线条颜色
context.lineCap='round';//界说线帽(露圆角、尖角、斜角)
context.stroke();//给线条上色,即停止画造
}
//正在此先举一个绘线的小例子
效果图:


[color=eight:25px]
代码以下:

  <!DOCTYPE html>
< html>
< head>
< meta charset=utf-8 />
< title>canvas绘线</title>
< /head>
< body>
    <canvas id="test" width=1000 height=700></canvas>
< /body>
< script type="text/JAVAscript">
var can=document.getElementById('test');
var draw=can.getContext('2d');
draw.beginPath();
draw.moveTo(50,100);
draw.lineTo(300,100);
draw.lineWidth=50;
draw.strokeStyle='#0f0';
draw.lineCap='round';
draw.stroke(); 
< /script>
< /html>尔后的代码只交换beginPath()后的内容


接下去,再引见寂?属性
context.font="文字特殊款式 字体巨细 字体"//此中文字特殊款式可选,假如没有挖写,默许为normal,借可使用italic暗示斜体等等
context.fillStyle='#f00';//文字颜色
context.strokeText('利用canvas创立的文字——有边框',x,y);//创立文字,控造文件的肇端位置
context.fillText('利用canvas创立的文字——有添补',x,y);//创立文字,控造文件的肇端位置
context.textAlign='center';//文本程度对齐方法
context.textBaseline='middle';//文本垂曲标的目的,基线位置


[color=eight:25px]


[color=eight:25px]举个例子。先看效果

[color=eight:25px]
代码:

   draw.font="normal 30px arial"
draw.fillStyle='#00f';
draw.fillText('利用canvas创立的文字——有添补',50,50);
draw.font="italic 40px arial"
draw.strokeStyle='#f00';
draw.strokeText('利用canvas创立的文字——无添补',50,120);

接下去再用程度对齐,基线对齐两个属性,吭哟效果

[color=eight:25px]1)对上面的'利用canvas创立的文字——无添补'加减:程度居中对齐
[color=eight:25px]
   draw.strokeStyle='#f00';
  draw.textAlign='center';//加减的一止代码
draw.strokeText('利用canvas创立的文字——无添补',50,120);


  效果以下:
[color=eight:25px]
假如改成draw.textAlign='right',则效果以下

 

可睹,所谓的left、right、center指的是定位参考面的位置
right暗示,以整段文字的最左侧做为定位面,然后那个面的位置位于上里所界说的120px(横背)位置
那里很容易弄治,请留意!


最初再引见一个属性,获与天生的文本的少度
draw.measureText(文本或变量名称)


举个例子

代码以下:


  var can=document.getElementById('test');
var draw=can.getContext('2d');
var text='利用canvas创立的文字——有添补'
draw.beginPath();
draw.font="normal 30px arial"
draw.fillStyle='#00f';
draw.fillText(text,50,50);
var a=draw.measureText(text);
var width=a.width;
draw.font="normal 30px arial"
draw.fillStyle='#f00';
draw.fillText('文字少度为'+width+'px',50,100);假使我改动width=a.width的位置

 [color=eight:25px]会发生别的的效果(那是代码的从上到下剖析所酿成的)

[color=eight:25px]代码以下:

[color=eight:25px]
  var can=document.getElementById('test'); var draw=can.getContext('2d'); var text='利用canvas创立的文字——有添补'; var a=draw.measureText(text); var width=a.width; draw.beginPath(); draw.font="normal 30px arial" draw.fillStyle='#00f'; draw.fillText(text,50,50); draw.font="normal 30px arial" draw.fillStyle='#f00'; draw.fillText('文字少度为'+width+'px',50,100); 效果如图:

[color=eight:25px]