博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
canvas-3文本&图片绘制与转换.
阅读量:6860 次
发布时间:2019-06-26

本文共 1802 字,大约阅读时间需要 6 分钟。

  hot3.png

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

你可能感兴趣的文章
hdu 2665 划分树
查看>>
hdu 4251 划分树
查看>>
poj 1704 Georgia and Bob(阶梯博弈)
查看>>
JQuery中的$.ajax()
查看>>
js 幻灯片
查看>>
Keras序列模型学习
查看>>
[bzoj2809] 派遣
查看>>
Windows2003上使用IIS7 Express使用FastCgi运行php
查看>>
安装程序时 “向数据库写入数据时发生错误!”
查看>>
图文:高春辉和他的网站梦
查看>>
网页之间的参数传递
查看>>
初步学习Django-第四篇:views.PY文件详解
查看>>
OAuth2简易实战(四)-Github社交联合登录
查看>>
Netty学习大纲
查看>>
OC中的私有方法
查看>>
分享几段JavaScript
查看>>
C++中的多态和Objective-C中的“多态”
查看>>
js基础五
查看>>
构建执法阅读笔记01
查看>>
剑指offer:合并两个排序的链表
查看>>