html代码
{/* 拼图 */}
<canvas
width='300' // 可设置画布的大小
height='800'
ref={(ref) => {
this.canvasRef = ref;
}}
></canvas>
js代码
想要在canvas区域里画图, 第一步需要取得绘图上下文,而取得上下文对象的引用,需要调用getContext()方法,并传入上下文参数"2d",这样就能取得2D上下文对象。
2D上下文的坐标起始于canvas的左上角,起始坐标为(0, 0),所有坐标值基于这个坐标原点计算,x越大越向右,越大越向下。
绘制2D图像将进行三步:
componentDidMount() {
this.createImage();
}
// 拼图制作
createImage = () => {
const ctx = this.canvasRef.getContext('2d');
console.log('ctxxxxx', ctx);
ctx.fillStyle = 'black';
ctx.fillRect(0, 0, 100, 100);
//获取图像的数据URL
var imgURL = this.canvasRef.toDataURL("image/png"); //默认图片格式为png,也可以自定义设置格式。
//开将这个imgURL的路径可在img标签中展示
};
使用toDataURL()方法,可导出绘制的图像。该方法可以获取绘制的图像的数据URL。并可以将该URL赋值给一个img元素,这样在页面中可以显示用canvas绘制的图像了。
注意:浏览器默认将图像编码成png格式(除非另行指定)。
2D绘制上下文内置了对图像的支持。如果想要把一张图像绘制在画布上,就需要 drawImage()方法。调用这个方法,可以使用三种不同的参数组合。
格式:drawImage(要绘制的图像, x, y); 其中,x、y表示图像的起点坐标。
// 拼图制作
createImage = () => {
const ctx = this.canvasRef.getContext('2d');
console.log('ctxxxxx', ctx);
ctx.fillStyle = 'black';
ctx.fillRect(0, 0, 100, 100);
//嵌入一个图像对象
var img = new Image();
//并获取图像的URL,当在赋值时,图像才开始加载。
img.src = "1.jpg";
//等图像加载完成后,才能将其绘制到画布中,所以要使用img.onload
img.onload = function () {
context.drawImage(img, 20, 20, 250, 270);
};
};
借鉴学习:Canvas