在开发中,如果遇到需要使用canvas同时绘制多张图片,但因为图片大小的不一样,排在数组前面的图片不一定能先被load然后绘制,就可能会导致画出来的图的排列顺序和预想的不一样(特别是因为跨域加了域名重定向的图片尤为明显),我的解决办法是:先全部画出来再排序再append到需要的节点里去。

<div id="myContent"></div>
let imgArray = ['img1.png', 'img2.png'];
let receiveArray = new Array();
let $myContent = document.getELmentById("myContent");
let {imgW, imgH} = {300, 300};let Canvas = document.createElement('canvas');
let ctx = Canvas.getContext("2d");
let scaleBy = 2;
Canvas.width = imgW * scaleBy;
Canvas.height= imgH * scaleBy;
imgArray.forEach((e, idx) => {let img = new Image();img.src = e;e.addEventListener('load', () => {ctx.drawImage(img, 0, 0, imgW * scaleBy, imgH * scaleBy);let imgCont = new Image();imgCont.src = Canvas.toDataURL();imgCont.id = 'img' + idx; receiveArray.push(imgCont); // 将绘制的img节点收集到数组里,这里的顺序可能和imgArray的顺序不一样if (receiveArray.length === imgArray.length) { //所有图片load并绘制完成let sortArr = new Array();receiveArray.forEach(ex => { //将所有绘制图片按imgArray顺序排序sortArr[ex.id.split('img')[1]] = ex;})sortArr.forEach(ex2 => {$myContent.appendChild(ex2)})}})
})

其实这也是一种略显无奈的做法,因为无法判断加载图片的实际大小,小的图片会先load并绘制,如果重定向域名后会加大这种现象,采用了绘制完再排序的做法。如果有谁想到更好的办法,欢迎指正批评。

canvas绘制多张图的排列顺序问题相关推荐

  1. html5+上下左右边界顺序,详解canvas绘制多张图的排列顺序问题

    在开发中,如果遇到需要使用canvas同时绘制多张图片,但因为图片大小的不一样,排在数组前面的图片不一定能先被load然后绘制,就可能会导致画出来的图的排列顺序和预想的不一样(特别是因为跨域加了域名重 ...

  2. canvas 在其他画好的上面继续画_详解canvas绘制多张图的排列顺序问题

    您好,请教您一个html5 canvas的问题: 我在canvas您好,请教一个html5 canvas的问题: 我在canvas中画了多个图形,有图像canvas可以实现 首先canvas要响应鼠标 ...

  3. python画多图在一个图_python pyecharts 实现一个文件绘制多张图

    Grid并行显示多张图 注意: 第一个图需为 有 x/y 轴的图,即不能为 Pie,其他位置顺序任意 from pyecharts import Bar, Line, Scatter, EffectS ...

  4. 【图形基础篇】02 # 指令式绘图系统:如何用Canvas绘制层次关系图?

    说明 [跟月影学可视化]学习笔记. 如何用 Canvas 绘制几何图形? 1. Canvas 元素和 2D 上下文 Canvas 元素上的 width 和 height 属性不等同于 Canvas 元 ...

  5. LATEX——两张图并列排列/双栏模板中图片通栏并列布局

    LATEX--两张图并列排列/双栏模板中图片通栏并列布局 正常插入图片 并列插入两张图片 双栏模板中图片通栏并列布局1(不同图片使用不同标题,不同编号) 双栏模板中图片通栏并列布局2(不同图片使有不同 ...

  6. canvas 绘制动态雷达图

    canvas 绘制动态雷达图 最近收到一个需求,需要做一个预定的动态雷达图,于是绞尽脑汁,基于canvas 终于实现如图的效果: 图片效果: 我是基于vue 来实现的,现在让我们看看具体是如何实现的: ...

  7. canvas绘制经典折线图(一)

    最终效果图如下: 实现步骤如下:注-引用了jQuery HTML代码 <!doctype html> <html lang="en"> <head&g ...

  8. html 环形图圆角,canvas绘制圆角环形图

    前言 之前一篇文章,写过关于canvas绘制百分比的环形图,以及进度条模糊的解决方案,今天项目中用到了圆角环形图,查了一下百度echart,发现并没有圆角环形图,highchart的圆角环形图和项目中 ...

  9. Echarts桑基图的排列顺序

    首先我们来说几个关于echarts的参数配置项 layoutIterations,布局的迭代次数.官方的解释如下: 这个不配合图来看,还真有点懵. 意思就是,如果 layoutIterations=0 ...

最新文章

  1. python实现nginx图形界面管理
  2. ROS中Remap标签详解
  3. IE安全系列:脚本先锋(4)
  4. 生产级部署 Python 脚本,崩溃可自启!
  5. jena 学习思路(转)
  6. LVS(7)——NAT实践
  7. 变,从南到北,从北到南...
  8. java线程的5个使用技巧
  9. Object类型转换成double/int类型
  10. 螃蟹为什么横着走,今天为大家介绍为什么螃蟹横着走
  11. android 画布线条加粗,Android 对TextView添加删除线,下划线,加粗,斜体等效果
  12. 1000套精选微信小程序源码
  13. 智能语音翻译APP——腾讯翻译君
  14. origin 2019 刻度线消失的问题
  15. TPC-H介绍及实战总结
  16. Manjaro20KDE桌面环境安装Google输入法
  17. 1688按关键词搜索示例
  18. 微信整人假红包图片_微信假红包图片生成器,假红包生成器微信(玩别人没商量)...
  19. 基于stm32无线充电器设计
  20. Java最牛教材!阿里技术官整合的四大主流中间件笔记

热门文章

  1. android怎么调textview间距,Android如何设置TextView的行间距、行高。
  2. 第一次使用虚拟机(VMware)
  3. Vue3使用element-plus1.3.0版本的el-menu菜单组件引入动态渲染icon图标时,图标组件刚好是Menu时报错,菜单不显示的解决方法
  4. 数字藏品盲盒系统功能开发H5源码搭建
  5. 工厂仪表定时拍照智能AI算法识别内网部署方案
  6. 抖音种草品宣,抖音短视频种草是什么意思?
  7. 温故知新——五大常用算法总结
  8. Miller_Rabin和Pollard_Rho算法
  9. (转载)如何成为一个漏洞赏金猎人
  10. Mac OS X常用软件介绍