1.绘制图片

  • 相关api及其参数:ctx.drawImage()
参数 说明
参数一 图片对象
参数二,三 可选,图片裁剪的基点(原图左上角为原点)
参数四,五 可选,图片裁剪区域的宽高(基于原图大小)
参数六,七 画布的绘制起点坐标
参数八,九 可选,被裁剪图片显示出来的宽高(缩放)
  • 注意:前5个参数用来描述要加载的图片,支持图片剪切,默认整张图片

  • 注意:后4个参数用来描述如何绘制(在哪个位置绘制,绘制大小),图片大小支持缩放,默认为原图大小

  • 注意:如果参数2-5已经传值,参数8-9就不能省略,不然会报错

  • 示例1:绘制完整的原图(图片的加载是异步的,所以绘制的图片的时候要在图加载完成后执行)

<script>
var canvas = document.querySelector("canvas")
var ctx = canvas.getContext("2d") //创建图片对象
var image = new Image()
//将图片加载到内存中
image.src = "xbx.jpeg"
//监听图片加载是否完成
image.onload = function(){
//图片已完成加载
ctx.drawImage(image,100,100)
}
</script>

  • 示例2:缩放原图(2-5参数不传,传8-9参数)
ctx.drawImage(image,100,100,160,90)

  • 示例3:剪切图片
//截去了左边的80px
ctx.drawImage(image,80,0,240,180,100,100,240,180)

  • canvas画布的内容可被转换成图片资源
var imgurl = canvas.toDataURL("image/png")
  • 帧动画:动画本身就是由无数帧的图片播放构成的,只要切换图片渲染就可以完成这个效果,为了节省图片资源,可以使用精灵图进行裁剪,以实现不同的图片,至于图片切换实际,可以监听键盘按键事件,根据不同的按键切换绘制的图片帧,切换图片帧时,可使用ctx.clearRect()清除旧的图片,再绘制新的图片

2.坐标转换

  • 相关api:translate()/scale()/rotate()
  • 注意:调用他们会导致整个画布内的元素都会受影响,包括坐标系,直线宽度,字体大小等等

3.偏移 translate()

  • 注意:使用translate()后整个坐标系统也会跟着偏移
<script>
var canvas = document.querySelector("canvas")
var ctx = canvas.getContext("2d") //原点偏移
ctx.translate(50,50)
ctx.font = "20px 微软雅黑";
ctx.textBaseline = "top"
ctx.fillText("本来我在左上角",0,0)
</script>

4.缩放 scale()

  • 注意:使用scale()后整个画布都缩放了
<script>
var canvas = document.querySelector("canvas")
var ctx = canvas.getContext("2d") //原点偏移
ctx.scale(0.5,0.5)
ctx.font = "40px 微软雅黑";
ctx.textBaseline = "top"
ctx.fillText("本来我在100*100的位置",100,100)
</script>

5.旋转 rotate()

  • 注意:单位 Math.PI
  • 实例:将画布顺时针旋转45度
<script>
var canvas = document.querySelector("canvas")
var ctx = canvas.getContext("2d") //原点偏移
ctx.rotate(Math.PI/4)
ctx.font = "20px 微软雅黑";
ctx.textBaseline = "top"
ctx.fillText("本来我在100*100的位置",0,0)
</script>

canvas(八)绘制图片和坐标转换的更多相关文章

  1. 前端使用html2canvas截图,在canvas上绘制图片及保存图片

    1.使用html2canvas 存在的问题: 不同的机型绘制位置不同的问题. 这个主要因为Html动态设置了html的dpr.(dpr可以解决屏幕显示不了1pxborder和无法显示小于12px的文字 ...

  2. 在canvas上面绘制图片--drawImage实例

    在canvas上面绘制图片--drawImage实例 关键点: 1.图片居中 2.其它 <!DOCTYPE html> <html lang="zh-cn"> ...

  3. canvas 2.0 图片绘制

    绘制图片drawImage 2013.02.21 by 十年灯·一条评论 本文属于<html5 Canvas画图系列教程> 这里的绘制图片是指把一张现成的图片,绘制到Canvas上面. 有 ...

  4. Canvas中 drawImage绘制图片不显示

    在学习 html5中的 Canvas.drawImage时写了如下代码: <!doctype html> <html> <head><title>研究& ...

  5. 使用html5 canvas绘制图片

    注意:本文属于<html5 Canvas绘制图形入门详解>系列文章中的一部分.如果你是html5初学者,仅仅阅读本文,可能无法较深入的理解canvas,甚至无法顺畅地通读本文.请点击上述链 ...

  6. Android Canvas使用drawBitmap绘制图片

    1.基本的绘制图片方法 //Bitmap:图片对象,left:偏移左边的位置,top: 偏移顶部的位置 drawBitmap(Bitmap bitmap, float left, float top, ...

  7. android中Canvas使用drawBitmap绘制图片

    1.主要的绘制图片方法 //Bitmap:图片对象,left:偏移左边的位置,top: 偏移顶部的位置     drawBitmap(Bitmap bitmap, float left, float ...

  8. canvas绘制图片

    canvas保存为data:image扩展功能的实现 [已知]canvas提供了toDataURL的接口,可以方便的将canvas画布转化成base64编码的image.目前支持的最好的是png格式, ...

  9. canvas - drawImage()方法绘制图片不显示的问题

    canvas有个很强大的api是drawImage()(w3c): 他的主要功能就是绘制图片.视频,甚至其他画布等.   问题: 慕名赶来,却一脚踩空,低头一看,地上一个大坑. 事情是这样的,在我看完 ...

  10. openLayers 4 canvas图例绘制,canvas循环添加图片,解决图片闪烁问题

    一.问题来源: 接触Openlayers 一段时间了,最近做了一个农业产业系统,项目中涉及到产业图例,最后考虑用canvas来绘制图例图像.当中带图片的图例移动时,图片会实现闪烁留白情况.闪烁是因为绘 ...

随机推荐

  1. 【合合TextIn】深度解析智能文档处理技术与应用

    一.智能文档处理介绍 智能文档处理(Intelligent Document Processing, IDP)是利用人工智能(AI).机器学习(ML).计算机视觉(CV).自然语言处理(NLP)等技术 ...

  2. C++ string类型常用操作

    string类型操作 字符串切割 str.substr(索引,切割的个数)  ->  返回字符串 注意:第二个参数为切割的个数 string buf = "abcdefg"; ...

  3. Spring —— 依赖自动装配

    依赖自动装配   IoC容器根据bean所依赖的资源在容器中自动查找并注入到bean中的过程称为自动装配 自动装配方式 按类型(常用) 按名称 按构造方法 不启用自动装配    注意: 自动装配用于引 ...

  4. Vue3——Vite + element-plus +Vue3 项目搭建、"@"别名设置

    1. 环境准备 node 官网 npm 切换国内 npm 源镜像 npm config set registry https://registry.npmmirror.com 查看当前的镜像源 npm ...

  5. 墨天轮国产数据库沙龙 | 许力:阿里云原生Lindorm TSDB数据库,驱动工业IT&OT超融合数字化系统升级

    分享嘉宾:许力 阿里云Lindorm 数据库产品经理 整理:墨天轮 导读 大家好,我是阿里云Lindorm 数据库产品经理许力,今天非常有荣幸给大家介绍阿里云 Lindorm 数据库面向工业场景的最佳 ...

  6. Vue 路由的懒加载的作用

    不会一次性加载全部的路由 ,使用哪个页面 就会加载哪个路由 : 可以优化spa页面首次加载  :

  7. 云原生爱好者周刊:使用树莓派组建 K8s 集群 | 2022-08-08

    开源项目推荐 Raspberry Pi Kubernetes Cluster 这是一个教育项目,旨在探索如何在家中使用树莓派构建 Kubernetes 集群,并使用 Ansible 来自动化部署和配置 ...

  8. Linux 7安装Mysql5.7版本

    Mysql 5.7的安装搭建 首先去到官方网站的下载链接中找到对应你Linux服务器版本的mysql软件包 https://dev.mysql.com/downloads/repo/yum/ 我使用的 ...

  9. node.js安装及环境配置基于Windows系统

    node.js安装及环境配置-Windows系统 1. 下载安装包 https://nodejs.org/zh-cn/download/ 根据自己电脑系统及位数选择,我的电脑是Windows系统.64 ...

  10. Seralizable

    class CSer { private String name; private int age; public CSer() { } public CSer(String name, int ag ...