drawImage 详解

背景:

在canvas的开发中 总会碰到drawImage这个API,但是里面有9个参数,具体代表什么意思有时候会把自己搞混乱了,特此记录一下,加深影响。

drawImage 方法有三种形态:

drawImage(image, dx, dy) 在画布指定位置绘制原图
drawImage(image, dx, dy, dw, dh) 在画布指定位置上按原图大小绘制指定大小的图
drawImage(image, sx, sy, sw, sh, dx, dy, dw, dh) 剪切图像,并在画布上定位被剪切的部分

参数描述
image规定要使用的图像、画布或视频
sx可选。开始剪切图片的 x 坐标位置
sy可选。开始剪切图片的 y 坐标位置
sw可选。被剪切图像的宽度(就是裁剪之前的图片宽度,这里的宽度若小于图片的原宽。则图片多余部分被剪掉;若大于,则会以空白填充)
sh可选。被剪切图像的高度(就是裁剪之前的图片高度)
dx在画布上放置图像的 x 坐标位置
dy在画布上放置图像的 y 坐标位置
dw可选。要使用的图像的宽度(就是裁剪之后的图片高度,放大或者缩放)
dh可选。要使用的图像的高度(就是裁剪之后的图片高度,放大或者缩放)

看实例(源图片是120*120的)

drawImage(image, dx, dy) 在画布指定位置绘制原图

var canvas = document.getElementById("canvas");
canvas.width=240;
canvas.height=240;
var ctx=canvas.getContext("2d");

var image = new Image();
image.src="./images/head.jpeg";
image.onload=function(){
ctx.drawImage(this,0,0);
}

效果如下

效果如下

可以看到图片没有做任何的处理,直接从0,0位置绘制出来

drawImage(image, dx, dy, dw, dh) 在画布指定位置上按原图大小绘制指定大小的图

var canvas = document.getElementById("canvas");
canvas.width=240;
canvas.height=240;
var ctx=canvas.getContext("2d");

var image = new Image();
image.src="./images/head.jpeg";
image.onload=function(){
ctx.drawImage(this,0,0,240,240);
}
效果如下

后面的两个参数,指定了绘制的长宽,这里都指定240,会把画布占满。

drawImage(image, sx, sy, sw, sh, dx, dy, dw, dh) 剪切图像,并在画布上定位被剪切的部分 ###


var canvas = document.getElementById("canvas");
canvas.width=240;
canvas.height=240;
var ctx=canvas.getContext("2d");

var image = new Image();
image.src="./images/head.jpeg";
image.onload=function(){
ctx.drawImage(this,0,0,60,60,0,0,120,120);
}

效果如下

图片被截取了左上角一部分,然后还放大显示长宽120

说明:

img

就是图片对象,可以是页面上获取的 DOM 对象,也可以是虚拟 DOM 中的图片对象。

dx、dy、dWidth、dHeight

表示在 canvas 画布上规划出一片区域用来放置图片,dx, dy 为绘图位置在 Canvas 元素的 X 轴、Y 轴坐标,dWidth, dHeight 指在 Canvas 元素上绘制图像的宽度和高度(如果不说明, 在绘制时图片的宽度和高度不会缩放)。

sx、sy、swidth、sheight

这 4 个参数是用来裁剪源图片的,表示图片在 canvas 画布上显示的大小和位置。sx, sy 表示在源图片上裁剪位置的 X 轴、Y 轴坐标,然后以 swidth, sheight 尺寸来选择一个区域范围,裁剪出来的图片作为最终在 Canvas 上显示的图片内容( swidth, sheight 不说明的情况下,整个矩形(裁剪)从坐标的 sx 和 sy 开始,到图片的右下角结束)。

以下为图片绘制的实例:

context.drawImage(image, 0, 0, 100, 100);

context.drawImage(image, 300, 300, 200, 200);

context.drawImage(image, 0, 100, 150, 150, 300, 0, 150, 150);

页面效果如下:

Api 中奇怪之处在于,sx、sy、swidth、sheight 为选填参数,但位置在 dx、dy、dWidth、dHeight 之前。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
drawImage() 方法是用于在画布上绘制图像的方法。根据引用,传递给 drawImage() 方法的图像必须是 Image 对象或 Canvas 元素。你可以通过创建一个 Image 对象,或者使用 HTML 中的一个图像标记来表示图像。在小程序中,也可以使用相应的图片资源。在 drawImage() 方法中,你可以指定图像的位置和尺寸来控制绘制的效果。 根据引用和引用,drawImage() 方法有多种使用方式,具体取决于你想要达到的效果。以下是几个常用的用法: 1. drawImage(image, dx, dy): 这是最简单的用法,它将图像绘制在画布上的指定位置(dx, dy)。 2. drawImage(image, dx, dy, width, height): 这个用法在第一个用法的基础上,增加了图像的宽度和高度,可以控制图像的缩放效果。 3. drawImage(image, sourceX, sourceY, sourceWidth, sourceHeight, destX, destY, destWidth, destHeight): 这个用法可以通过指定源图像的区域和目标图像的区域来实现图像的裁剪和缩放。 通过在小程序中调用 drawImage() 方法,并根据你的需求传入相应的参数,你可以在画布上绘制图像并控制它们的位置、尺寸和缩放效果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [drawImage()方法](https://blog.csdn.net/u012193330/article/details/44996923)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [小程序中canvas的drawImage方法参数使用详解](https://download.csdn.net/download/weixin_38715567/13287757)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

艾利克斯冰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值