canvas图片背景实现(React)

canvas画布背景基本为透明色,给画布增加背景图片,可以创建一个Image对象,将Image对象src设置为背景图片的地址,在对象加载完成后 使用drawImage在画布上绘制图片即可。
示例如下:

		const elem = canvasRef.current;
        const canvas = elem.getContext('2d');

        let img = new Image();
        img.src = "./1.jpg"
        

         // 加载背景图片
        img.onload = () => {
            canvas.drawImage(img,0,0)
        }

也可以在img.onload中使用如下代码进行替换

		 let bg = canvas.createPattern(img,"no-repeat");     //方法指定的方向内重复指定的元素
         canvas.fillStyle = bg;  //属性设置或返回用于填充的颜色,渐变或模式
         canvas.fillRect(canvasX,canvasY,canvasWidth,canvasHeight);    //绘制以填充矩形(左上角x,左上角y,宽,高)

如果想让画布面积和背景图片面积一样大,可以在第一步的img.onload中加入如下代码即可实现

			elem.height = img.height;
            elem.width = img.width;

react组件完整如下

import React from 'react'
import { useEffect, useRef } from 'react';
import './index.css'

export default function Canvaspage() {
   
   //获取canvas元素节点
  const canvasRef = useRef(null);
  
  useEffect(() => {
      loadImg();
  })

  const loadImg = () => {

      const elem = canvasRef.current;
      const canvas = elem.getContext('2d');

      let img = new Image();
      console.log(arg);
      img.src = "./1.jpg";
      

       // 加载背景图片
      img.onload = () => {
          elem.height = img.height;
          elem.width = img.width;
          canvas.drawImage(img,0,0)
          // let bg = canvas.createPattern(img,"no-repeat");     //方法指定的方向内重复指定的元素
          // canvas.fillStyle = bg;  //属性设置或返回用于填充的颜色,渐变或模式
          // canvas.fillRect(canvasX,canvasY,canvasWidth,canvasHeight);    //绘制以填充矩形(左上角x,左上角y,宽,高)
      }

  }
  return (
      <div>
          <div>
              <canvas className="canvas_box" ref={canvasRef}></canvas>
          </div>            
      </div>
      
  )
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值