network导出图片


代码:

/** @Descripttion: * @version: * @Author: ZhangJunQing* @Date: 2022-04-18 14:44:05* @LastEditors: ZhangJunQing* @LastEditTime: 2022-05-05 16:29:34*/
import React, { useEffect, useState } from 'react'const twaver = require('twaver');
// const demo = require('demo');
const Demo = () => {const [network, setnetwork] = useState({})const [src, setsrc] = useState("")const init = () => {var box = new twaver.ElementBox();var network = new twaver.vector.Network(box);setnetwork(network)network.invalidateElementUIs();network.adjustBounds({ x: 0, y: 0, width: 500, height: 500 });document.getElementById("testID").appendChild(network.getView());var autoLayouter = new twaver.layout.AutoLayouter(box);network.setScrollBarVisible(false)var from1 = new twaver.Node();from1.setName('from1');box.add(from1);var to = new twaver.Node();to.setName('To');box.add(to);var from2 = new twaver.Node();from2.setName('from2');box.add(from2);var from3 = new twaver.Node();from3.setName('from3');box.add(from3);var from4 = new twaver.Node();from4.setName('from4');box.add(from4);var link = new twaver.Link(from1, to);var link2 = new twaver.Link(from2, to);var link3 = new twaver.Link(from3, to);var link4 = new twaver.Link(from4, to);link.setName('Link');link2.setName('link2');link3.setName('link3');link4.setName('link4');box.add(link);box.add(link2);box.add(link3);box.add(link4);autoLayouter.doLayout('symmetry', function () {network.zoomOverview(false);});}useEffect(init, [])const exportFun = () => {var canvas;if (network.getCanvasSize) {//canvas = network.toCanvas(network.getCanvasSize().width/5, network.getCanvasSize().height/5);canvas = network.toCanvas(400, 400);} else {canvas = network.toCanvas(network.getView().scrollWidth, network.getView().scrollHeight);}if (twaver.Util.isIE) {} else {var Imgsrc = canvas.toDataURL("image/png");var link = document.createElement('a')setsrc(Imgsrc)link.href = Imgsrcconsole.log(Imgsrc)link.download = "imgName"document.body.appendChild(link)link.click()document.body.removeChild(link)}}return (<><p style={{ fontSize: "20px", paddingLeft: "50px", poaddingTop: "50px" }}>tips: </p><ul style={{ fontSize: "20px", paddingLeft: "50px" }}><li>导出img</li><button onClick={exportFun}>点击,导出network pic</button><img style={{ width: "200px", height: "200px" }} src={src}></img></ul>{/* 画布元素需要开启定位 不然生成的图元坐标点会偏移 */}<div id="testID" style={{ width: "800px", height: "800px", border: "1px solid #ccc", position: "relative", margin: "0 auto" }}></div></>)
}
export default Demo

主要就是利用twaver自带的方法转成canvas对象。

    if (network.getCanvasSize) {//canvas = network.toCanvas(network.getCanvasSize().width/5, network.getCanvasSize().height/5);canvas = network.toCanvas(400, 400);} else {canvas = network.toCanvas(network.getView().scrollWidth, network.getView().scrollHeight);}

然后将canvas变成base64,在页面显示并导出:

 const exportFun = () => {var canvas;if (network.getCanvasSize) {//canvas = network.toCanvas(network.getCanvasSize().width/5, network.getCanvasSize().height/5);canvas = network.toCanvas(400, 400);} else {canvas = network.toCanvas(network.getView().scrollWidth, network.getView().scrollHeight);}if (twaver.Util.isIE) {} else {var Imgsrc = canvas.toDataURL("image/png");var link = document.createElement('a')setsrc(Imgsrc)link.href = Imgsrcconsole.log(Imgsrc)link.download = "imgName"document.body.appendChild(link)link.click()document.body.removeChild(link)}

学习参考:TWaver Documents

Twaver-HTML5基础学习(37)network导出图片并下载相关推荐

  1. 【html5基础学习速成】

    HTML5是Web中核心语言HTML的规范,用户使用任何手段进行网页浏览时看到的内容原本都是HTML格式的,在浏览器中通过一些技术处理将其转换成为了可识别的信息.HTML5在从前HTML4.01的基础 ...

  2. HTML5基础学习——列表标签表单标签

    学习内容: 1.列表标签 表格是用来显示数据的,那么列表就是用来布局的. 列表最大的特点就是整齐.整洁.有序,它作为布局会更加自由和方便. 根据使用场景不同,列表可以分为三大类:无序列表.有序列表和自 ...

  3. Python基础学习:svn导出差异文件脚本

    由于是刚接触python不久,所以很多都不是很熟练,只能是用到什么查点什么.所以如果有什么bug或者不严谨的语法或其他,希望各位看客指正. 鉴于公司的平台研发部门需求想直接把svn中的差异代码导出并打 ...

  4. 前端(HTML5基础学习笔记)

    以下学习路线都是基于自己看的黑马程序员视频总结而来 学习路线:HTML5 -> CSS3 -> H5C3 一.HTML简介 1. 网页 2. 常用游览器 3. Web标准(重点) 二.HT ...

  5. HTML5基础学习(5):百度云盘制作、简单表格制作

    一.百度云盘制作 (1)绝对地址与相对地址 绝对地址:在任何情况下,都可以找得到的地址.网页中下面图片所在的路径叫做绝对路径: <img src="http://1000phone.c ...

  6. HTML5基础学习(7):登录表单制作、表单知识补充

    一.登录表单制作 有的时候用户需要填写信息,然后把填写完的信息交给服务器.把数据提交给服务器的动作就需要一个新的知识点:表单. (1)常见的表单控件 大部分的表单控件都是<input>编写 ...

  7. IOS网络基础学习三:NSURLSession的Download下载任务和代理方法

    文章目录 block下载任务 下载代理方法 block下载任务 - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UI ...

  8. uniapp/小程序 canvas画布导出图片并下载到本地

    如果微信原生的话,此处uni可以换成wx this.canvas是上一篇文章生成的canvas画布 uni.canvasToTempFilePath({// res.tempFilePath临时路径c ...

  9. HTML html5基础详细笔记 第一个模块

    第01章-前端核心技术-HTML5基础 学习目标 了解什么是HTML 掌握HTML标签.元素的概念 重点 掌握HTML常用头部元素的使用 重点 掌握HTML标题.段落.文本.图片等排版 重点 难点 掌 ...

最新文章

  1. 有关C语言指针学习思想的随笔常用形式的总结(原创)
  2. 将表单请求提交到本页
  3. 严选前端全栈工程师学习笔记
  4. threejs设置对象层次
  5. sicktim571操作手册_SICK激光传感器TIM310操作说明书
  6. android--------Popupwindow的使用
  7. MySQL报错this is incompatible with sql_mode=only_full_group_by
  8. 计算机网络重点知识总结 谢希仁版,计算机网络谢希仁版网络层知识点总结
  9. 基于最大正向匹配算法的中文分词
  10. 易语言皮肤模块200个_S7200 SMART 模拟量模块种类amp;选型须知
  11. Prototype(原型)
  12. 计算机设备安全隐患排查,安全安全隐患排查实施方案
  13. 16进制 颜色透明度
  14. SQL基础系列(八)——排序、分组排序(RANK)
  15. Yank-Note笔记软件的37个特色功能,值得下载
  16. c#推箱子小游戏代码_C语言实现推箱子小游戏
  17. MT7620a-Openwrt-Frp
  18. 论文笔记——使用信息熵对复杂网络中节点进行影响力排名
  19. 费解的开关(模拟/BFS+二进制)
  20. 新的起点,梦的启航!我为什么要写这个博客

热门文章

  1. 北京自动驾驶路测报告公布:测试排名只是表面,解读百度领跑背后
  2. 组合数学之加法与乘法原理
  3. Linux下查看目录大小-du命令
  4. 树莓派 Raspberry Pi —— wiringPi库安装
  5. 计算机机房方面的职业资格证,【国家标准】国家职业技能标准 (2019年版) 水文勘测工(33页)-原创力文档...
  6. 科研笔记3:字号、字体、图尺寸、颜色
  7. 9G数字星河产业园落地湖州,加速当地数字经济发展
  8. 云鲸扫拖一体机器人说明书_云鲸扫拖一体机器人J1开箱测评,扫地拖地功能测试...
  9. 公众号被关注后自动回复两条消息,文字+图片是如何实现的?
  10. 2020-7-13:记录足迹。西电计算机考研总结 优研计划夏令营