canvas-3文本&图片绘制与转换.

canvas 文本&图片绘制与转换

文本绘制

1,ctx.fillText(text,x,y,maxWidth)

2,ctx.strokeText(text,x,y,maxWidth)

  • 参数:text:要绘制的文本内容
  • x,y :指文本绘制的坐标位置;
  • maxWidth :可选,设置绘制的文本显示的最大的宽度;

3,ctx.fout,给文本设置属性

ctx.font = " 30px 微软雅黑 ";
ctx.fillText("太阳当空照,花儿对我笑", 100, 100);

文本的对齐方式

  • 水平对齐 -- 参数:left,center,right,start(默认),end * 水平对齐的参照物为 绘制文字的起始点 * start和end 跟文字方向也就是css样式的direction相关 * 如果direction是ltr的那么。startleft表现一致 * 如果direction是rtl的那么。startright 表现一致
  • 垂直对齐 -- 参数:top middle bottom hanging alphabetic(默认) ideographic
    • ctx.textBaseline
    • top: 文本的基线处于文本的正上方,并且有一段距离
    • middle: 文本的基线处于文本的正中间
    • bottom:文本的基线处于文本的正下方,并且有一段距离
    • hanging: 文本的基线处于文本的正上方,并且和文本贴合
    • alphabetic : 默认的值,基线处于文本的下方,并且穿
    • ideographic : 和bottom相似, 但是不一样 文字位置

常用对比位置参照:

常用文字位置说明


measureText

  • 可以用来获取在当前上下文字体下,文本所显示出来的长度

    返回值是一个对象,对象中有width属性,用来表示文本的长度;


绘制图片

  • 可以使用js中提供的一个快速创建图片对象的内置构造函数Image
var img = new Image();
img.src = "imgs/bg_v3.png";
1, 添加画 drawImage
  • 1.三参数模式:drawImage(img, x, y)
    • img: 要画的图片对象,可以是img标签对象,也可以是canvas标签对象,也可以是video标签对象
// x, y: 代表图像的左上角在画布中的位置
    img.onload = function () {
        ctx.drawImage(img, 0, 0);
    }
    1. 五参模式 drawImage(img, x, y, w, h)
    • img: 要画的图片对象,可以是img标签对象,也可以是canvas标签对象,也可以是video标签对象
    • x, y: 代表图像的左上角在画布中的位置
    • w, h: 可以用来设置要将图像以多大的尺寸画到画布上
    1. 九参模式 drawImage(img, x, y, w, h, x1, y1, w1, h1)
    • img: 要画的图片对象,可以是img标签对象,也可以是canvas标签对象,也可以是video标签对象
    • x, y, w, h: 图片中的一个矩形的区域
    • x1, y1, w1, h1: 画布中的一个矩形的区域

    把图片中的一个矩形的区域的内容,画到画布中对应的矩形的区域中


变换

1.平移变换

  • 移动画布的原点到指定的位置
    • 语法:translate(x, y);
    • x, y 表示新原点的坐标
    • 注意: 之前画好的图形,不会受到平移变换的影响
ctx.translate(cas.width / 2, cas.height / 2);
ctx.strokeRect(0, 0, 100, 100);

2.缩放变换

  • 根据参数传入的比例,对画布进行缩放
    • 语法 scale(x, y)
    • x, y分别代表x坐标和y坐标的缩放比例,如果小于1,是缩小,如果大于1,是放大
ctx.scale(0.5, 1);
ctx.strokeRect(0, 0, 100, 100);

3.旋转变换

  • 将画布围绕原点旋转指定的角度!
    • 语法:rotate(弧度)
    • 旋转是在上一次的基础上做的
ctx.rotate(Math.PI / 12);
ctx.strokeRect(200, 200, 100, 100);

转载于:https://my.oschina.net/mdu/blog/881184

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值