canvas上下文的img函数包含如下参数:
img,sx(可选),sy(可选),swidth(可选),sheight(可选),x,y
如您所见,img和x之间有可选参数。我如何指定我不想使用sx sy swidth或sheight并跳转到x?
答案 0 :(得分:2)
如果您正在谈论CanvasRenderingContext2D.drawImage()
方法,那么它实际上允许您传递这三个参数:
ctx.drawImage(img, x, y);
有关详细信息,请see MDN。
答案 1 :(得分:0)
ctx.drawImage
不能跳过参数!! 您不能跳过此函数的任何可选参数。
您必须传递3个,5个或9个参数。
如果您为第一个参数添加除null
,undefined
,false
,true
等数字之类的值,则该值将被强制转换为一个数字。
如果您传递除了有效图像之外的任何内容作为第一个参数,则调用将引发错误。
const c = document.createElement("canvas");
const ctx = c.getContext("2d");
function test(func, message) {
try {
func();
console.log(message)
} catch (e) {
console.log(message + e.message)
}
}
test(() => ctx.drawImage(c, 0, 0), "drawImage(img,x,y) OK");
test(() => ctx.drawImage(c, 0, 0, 10, 10), "drawImage(img, x, y, w, h) OK");
test(() => ctx.drawImage(c, 0, 0, 10, 10, 0, 0, 10, 10), "drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh) OK");
test(() => ctx.drawImage(c, null, 0), "drawImage(c,null,0) OK null is converted to 0");
test(() => ctx.drawImage(c, undefined, 0), "drawImage(c,undefined,0) OK undefined is converted to 0");
test(() => ctx.drawImage(c, 0), "drawImage(c,0) Error:");
test(() => ctx.drawImage(c, 0, 0, 10), "drawImage(c,0,0,10) Error:");
test(() => ctx.drawImage(c, 0, 0, 10, 10, 0, 0), "drawImage(c,0,0,10,10,0,0) Error:");
test(() => ctx.drawImage(null, 0, 0), "drawImage(null,0,0) Error:");