canvas绘制图片节点,报错的解决方法,涉及this指向问题

//首先是canvas绘制图片节点的过程,vue项目
<script>
	import  自定义img变量名 from '引入的图片地址';		//引入图片

	export default {
		data() {
			return {
				ctx: null,
				width: 2000,
				height: 1000,
			}
		},
		created(){
			this.initchart();
		},
		methods: {
			initchart(){
				//1-设置画布
				let canvas = this.$d3.select('dom节点,例: .box')
					.append('canvas')			//在该节点下插入canvas的标签
					.attr('width',this.width)
					.attr('height',this.height);
				let ctx = canvas.node().getContext('2d');
				this.ctx = ctx;
				//3-调用drawImg绘制图片节点
				this.drawImg(import引入的图片变量名, 'x坐标,例:1000', 'y坐标');
			},
			//2-绘制图片节点,封装一个函数
			/**
			*imageSrc是图片路径,imageX,imageY是图片的坐标
			*/
			drawImg(imageSrc, imageX, imageY){
				let image = new Image();		//动态创建img
				image.src = imageSrc;
				image.onload = () => {			//注意:此处一定要用箭头函数
					this.ctx.drawImage(image, imageX, imageY);		//ctx.drawImage是canvas绘制图片节点的api
				}
			},			
		}	
	}
</script>

报错问题:
在这里插入图片描述
普通函数的this指向的是当前调用它的事情,即img,而非vue实例
普通函数的this指向的是当前调用它的事情,即img,而非vue实例,所以要改成箭头函数,就不会报错了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值