Javascript 在画布上使矩形图像成为不规则形状

Javascript 在画布上使矩形图像成为不规则形状,javascript,canvas,Javascript,Canvas,在网上搜索了一个多小时后,我没有找到任何运气 我想知道这是否可能,如果可能的话,我如何在js画布上创建一个透明的图像,而不是被视为一个矩形,而只是它的可见区域 例如,如果单击png上的透明点,脚本将不考虑对象的该部分 谢谢:)是的,您可以使用context.getImageData 演示: 此代码将获得一个数组,其中包含画布上每个像素的信息: var data=ctx.getImageData(0,0,canvas.width,canvas.height).data; 数据数组由4个连续元素组

在网上搜索了一个多小时后,我没有找到任何运气

我想知道这是否可能,如果可能的话,我如何在js画布上创建一个透明的图像,而不是被视为一个矩形,而只是它的可见区域

例如,如果单击png上的透明点,脚本将不考虑对象的该部分


谢谢:)

是的,您可以使用
context.getImageData

演示:

此代码将获得一个数组,其中包含画布上每个像素的信息:

var data=ctx.getImageData(0,0,canvas.width,canvas.height).data;
数据
数组由4个连续元素组成,表示一个像素的红色、绿色、蓝色和alpha(不透明度)信息

The data array's elements #0-3 have the top-left pixel's r,g,b,a info.

The data array's elements #4-7 have the next rightward pixel's r,g,b,a info.

...and so on...
因此,给定鼠标在画布上的位置,您可以获取该像素的alpha信息。如果alpha值为零,则该像素是透明的

此代码将读取鼠标下的alpha值并确定其是否透明:

var isTransparent = data[(mouseY*canvas.width+mouseX)*4+3]>0;

是的,您可以使用
context.getImageData

演示:

此代码将获得一个数组,其中包含画布上每个像素的信息:

var data=ctx.getImageData(0,0,canvas.width,canvas.height).data;
数据
数组由4个连续元素组成,表示一个像素的红色、绿色、蓝色和alpha(不透明度)信息

The data array's elements #0-3 have the top-left pixel's r,g,b,a info.

The data array's elements #4-7 have the next rightward pixel's r,g,b,a info.

...and so on...
因此,给定鼠标在画布上的位置,您可以获取该像素的alpha信息。如果alpha值为零,则该像素是透明的

此代码将读取鼠标下的alpha值并确定其是否透明:

var isTransparent = data[(mouseY*canvas.width+mouseX)*4+3]>0;

是的,您可以使用
context.getImageData

演示:

此代码将获得一个数组,其中包含画布上每个像素的信息:

var data=ctx.getImageData(0,0,canvas.width,canvas.height).data;
数据
数组由4个连续元素组成,表示一个像素的红色、绿色、蓝色和alpha(不透明度)信息

The data array's elements #0-3 have the top-left pixel's r,g,b,a info.

The data array's elements #4-7 have the next rightward pixel's r,g,b,a info.

...and so on...
因此,给定鼠标在画布上的位置,您可以获取该像素的alpha信息。如果alpha值为零,则该像素是透明的

此代码将读取鼠标下的alpha值并确定其是否透明:

var isTransparent = data[(mouseY*canvas.width+mouseX)*4+3]>0;

是的,您可以使用
context.getImageData

演示:

此代码将获得一个数组,其中包含画布上每个像素的信息:

var data=ctx.getImageData(0,0,canvas.width,canvas.height).data;
数据
数组由4个连续元素组成,表示一个像素的红色、绿色、蓝色和alpha(不透明度)信息

The data array's elements #0-3 have the top-left pixel's r,g,b,a info.

The data array's elements #4-7 have the next rightward pixel's r,g,b,a info.

...and so on...
因此,给定鼠标在画布上的位置,您可以获取该像素的alpha信息。如果alpha值为零,则该像素是透明的

此代码将读取鼠标下的alpha值并确定其是否透明:

var isTransparent = data[(mouseY*canvas.width+mouseX)*4+3]>0;

你能从一本好书开始吗你能从一本好书开始吗你能从一本好书开始吗你能从一本好书开始吗