canvas(八)绘制图片和坐标转换
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(八)绘制图片和坐标转换的更多相关文章
- 前端使用html2canvas截图,在canvas上绘制图片及保存图片
1.使用html2canvas 存在的问题: 不同的机型绘制位置不同的问题. 这个主要因为Html动态设置了html的dpr.(dpr可以解决屏幕显示不了1pxborder和无法显示小于12px的文字 ...
- 在canvas上面绘制图片--drawImage实例
在canvas上面绘制图片--drawImage实例 关键点: 1.图片居中 2.其它 <!DOCTYPE html> <html lang="zh-cn"> ...
- canvas 2.0 图片绘制
绘制图片drawImage 2013.02.21 by 十年灯·一条评论 本文属于<html5 Canvas画图系列教程> 这里的绘制图片是指把一张现成的图片,绘制到Canvas上面. 有 ...
- Canvas中 drawImage绘制图片不显示
在学习 html5中的 Canvas.drawImage时写了如下代码: <!doctype html> <html> <head><title>研究& ...
- 使用html5 canvas绘制图片
注意:本文属于<html5 Canvas绘制图形入门详解>系列文章中的一部分.如果你是html5初学者,仅仅阅读本文,可能无法较深入的理解canvas,甚至无法顺畅地通读本文.请点击上述链 ...
- Android Canvas使用drawBitmap绘制图片
1.基本的绘制图片方法 //Bitmap:图片对象,left:偏移左边的位置,top: 偏移顶部的位置 drawBitmap(Bitmap bitmap, float left, float top, ...
- android中Canvas使用drawBitmap绘制图片
1.主要的绘制图片方法 //Bitmap:图片对象,left:偏移左边的位置,top: 偏移顶部的位置 drawBitmap(Bitmap bitmap, float left, float ...
- canvas绘制图片
canvas保存为data:image扩展功能的实现 [已知]canvas提供了toDataURL的接口,可以方便的将canvas画布转化成base64编码的image.目前支持的最好的是png格式, ...
- canvas - drawImage()方法绘制图片不显示的问题
canvas有个很强大的api是drawImage()(w3c): 他的主要功能就是绘制图片.视频,甚至其他画布等. 问题: 慕名赶来,却一脚踩空,低头一看,地上一个大坑. 事情是这样的,在我看完 ...
- openLayers 4 canvas图例绘制,canvas循环添加图片,解决图片闪烁问题
一.问题来源: 接触Openlayers 一段时间了,最近做了一个农业产业系统,项目中涉及到产业图例,最后考虑用canvas来绘制图例图像.当中带图片的图例移动时,图片会实现闪烁留白情况.闪烁是因为绘 ...
随机推荐
- 通用能力及AI核心能力表现优异!合合信息智能文档处理系统(IDP)高评级通过中国信通院评估
数字经济快速发展的背后,全球数据总量呈现出爆发式增长趋势.智能文档处理(IDP)技术能够高效地从多格式文档中捕捉.提取和处理数据,帮助机构和企业大幅提升文档处理效率,节约时间和人力成本.近期,合合信息 ...
- 字节跳动的多平台绽放秘诀 | Flutter 开发者故事
字节跳动旗下运营着一系列成功的用户产品.企业应用以及服务,覆盖信息.教育.娱乐等不同领域.随着产品阵容的不断发展,传统的原生双平台开发已经难以满足团队更高效.更灵活.更精美,以及更多样的产品研发需求. ...
- Java日期时间API系列20-----Jdk8中java.time包中的新的日期时间API类,ZoneId时区ID大全等。
Java日期时间API系列19-----Jdk8中java.time包中的新的日期时间API类,ZonedDateTime与ZoneId和LocalDateTime的关系,ZonedDateTime格 ...
- CE-植物大战僵尸杂交版
植物大战僵尸杂交版 偏移:208+82c
- 配置linux的远程登录操控 ssh 配置密钥
1. 安装ssh服务 yum install openssh-server 启动服务 service ssh start ssh 的配置文件位置 ect/ssh/sshd_config 001. 把P ...
- .Net 中 LINQ 基础
LINQ 基本概念: 语句集成查询,(Language - Integrated Query) 常见用途: .Net 原生集合(List,Array,Dictonary,etc) SQL数据库(尤其是 ...
- javaScript遍历对象总结
定义对象: const obj = { name: 'zlx', id: 245, age: 25, gender: '男', } 1. 使用 for... in..循环遍历 对象的属性有2种方式可以 ...
- Android复习(二)应用资源 --> 颜色状态列表
转自: https://developer.android.google.cn/guide/topics/resources/color-list-resource 颜色状态列表资源 ColorSta ...
- 云原生周刊:CNCF 宣布 Falco 毕业|2024.3.4
开源项目推荐 ldap-operator 用于部署和管理 LDAP 目录的 Kubernetes Operator. Updatecli Updatecli 是一个用于应用文件更新策略的工具.每个应用 ...
- KubeSphere 社区双周报 | OpenFunction v0.8.0 发布 | 2022-12-09
KubeSphere 从诞生的第一天起便秉持着开源.开放的理念,并且以社区的方式成长,如今 KubeSphere 已经成为全球最受欢迎的开源容器平台之一.这些都离不开社区小伙伴的共同努力,你们为 Ku ...