当img为数组时,canvas画图像时只显示一个

年秒 2017-12-13 03:32:09

for (n = 0; n<8; n++) {
var image = new Image();
image.src = imgSrc[n]; //imgSrc为一个图片路径的数组。
image.onload = function () {
console.log(image);
//创建canvas
var oCan = document.createElement('canvas');
$("#sR-div1").append(oCan);
var context = oCan.getContext("2d");
var imgHeight = this.height;
var imgWidth = this.width;
imgWidth = oCan.width;
imgHeight = oCan.height;
context.drawImage(image, 0, 0, imgWidth, imgHeight);
}
}

这个画出来的图片总是最后数组里的最后一个路径的图片,请问应该怎么解决,让它画出数组里其他的照片?
...全文
385 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_35122362 2019-03-29
  • 打赏
  • 举报
回复
请问如果image是传来的数组时,可以用canvas绘制吗
年秒 2017-12-13
  • 打赏
  • 举报
回复
引用 4 楼 functionsub 的回复:
不会哦,楼上的代码已经没问题了。你自己看错了吧? 你代码的问题就是每次drawimage的时候传入的是image这个变量,这个变量每次都会被重新赋值,所以画出来的都是最后那张图片。 改成this就没这问题了。
... ...确实是我看错了
functionsub 2017-12-13
  • 打赏
  • 举报
回复
不会哦,楼上的代码已经没问题了。你自己看错了吧? 你代码的问题就是每次drawimage的时候传入的是image这个变量,这个变量每次都会被重新赋值,所以画出来的都是最后那张图片。 改成this就没这问题了。
年秒 2017-12-13
  • 打赏
  • 举报
回复
引用 2 楼 jslang 的回复:

	var imgs = [];
	for (n = 0; n<8; n++) {
		var image = new Image();
		imgs[n] = image;
		image.src = imgSrc[n];  //imgSrc为一个图片路径的数组。
		image.onload = function () {
			console.log(this);
			//创建canvas
			var oCan = document.createElement('canvas');
			$("#sR-div1").append(oCan);
			var context = oCan.getContext("2d");
			var imgHeight = this.height;
			var imgWidth = this.width;
			oCan.width = imgWidth;
			oCan.height = imgHeight;
			context.drawImage(this, 0, 0, imgWidth, imgHeight);
		}
	}


虽然console出来的路径确实不同,但是在canvas画出来的还是同一张图片...TAT...
天际的海浪 2017-12-13
  • 打赏
  • 举报
回复

	var imgs = [];
	for (n = 0; n<8; n++) {
		var image = new Image();
		imgs[n] = image;
		image.src = imgSrc[n];  //imgSrc为一个图片路径的数组。
		image.onload = function () {
			console.log(this);
			//创建canvas
			var oCan = document.createElement('canvas');
			$("#sR-div1").append(oCan);
			var context = oCan.getContext("2d");
			var imgHeight = this.height;
			var imgWidth = this.width;
			oCan.width = imgWidth;
			oCan.height = imgHeight;
			context.drawImage(this, 0, 0, imgWidth, imgHeight);
		}
	}


天际的海浪 2017-12-13
  • 打赏
  • 举报
回复

	var imgs = [];
	for (n = 0; n<8; n++) {
		var image = new Image();
		imgs[n] = image;
		image.src = imgSrc[n];  //imgSrc为一个图片路径的数组。
		image.onload = function () {
			console.log(image);
			//创建canvas
			var oCan = document.createElement('canvas');
			$("#sR-div1").append(oCan);
			var context = oCan.getContext("2d");
			var imgHeight = this.height;
			var imgWidth = this.width;
			imgWidth = oCan.width;
			imgHeight = oCan.height;
			context.drawImage(image, 0, 0, imgWidth, imgHeight);
		}
	}
内容概要:本文详细介绍了利用Simulink进行变压器开路试验的电路连接配置与仿真实现方法,重点在于通过仿真手段还原实际电力系统中变压器在空载条件下的电气特性,从而深入理解其工作原理与性能表现。文章作为电力系统仿真系列研究的一部分,系统阐述了从电路模型搭建、参数设定、仿真运行到结果分析的完整流程,突出展示了MATLAB/Simulink在电力设备建模与教学科研中的强大功能与应用价值。; 适合人群:具备电力系统基础知识,熟悉MATLAB/Simulink仿真环境,从事电气工程、自动化及相关领域的研发人员,以及高年级本科生和研究生。; 使用场景及目标:①掌握变压器开路试验的基本原理与Simulink仿真建模的具体步骤;②通过仿真实验深入理解空载电流、铁芯损耗及励磁特性等关键参数的物理意义;③为后续开展变压器短路试验、暂态过程分析以及其他电力设备的仿真研究奠定理论与实践基础。; 阅读建议:建议结合Simulink软件动手实践,逐步构建并调试电路模型,重点关注各元件参数的设置方法与测量模块的应用技巧,同推荐参考文中提及的其他相关仿真案例进行拓展学习,以全面提升对电力系统仿真实践的整体认知与操作能力。

87,989

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧