当前位置: 首页 > wzjs >正文

自做网站好做吗注册公司登录什么网站

自做网站好做吗,注册公司登录什么网站,品牌网络推广怎么做,宣传片拍摄合同使用html2canvas进行截图操作 在 Vue 中使用 ​​html2canvas​​ 将 HTML 元素(如包含贝塞尔曲线的 Canvas/SVG)转换为图片 下载html2canvas npm install html2canvas在页面中使用,要截取哪个div的内容,先给这个div加一个ref标…

使用html2canvas进行截图操作

在 Vue 中使用 ​​html2canvas​​ 将 HTML 元素(如包含贝塞尔曲线的 Canvas/SVG)转换为图片

下载html2canvas

npm install html2canvas

在页面中使用,要截取哪个div的内容,先给这个div加一个ref标识,如ref=“html_container”

主要用到的:
在这里插入图片描述

具体代码:

<template><div class="CanvasPage" ref="html_container"><!-- 未处理时的canvas画布数据 --><canvas :id="'canvas' + '002'" :style="`position: absolute; `"></canvas><!-- 使用赛贝尔曲线以及笔锋处理之后的画布数据 --><canvas:id="'canvas' + '001'"@pointerdown.stop="onPointerDown":style="`position: absolute; `"@touchstart="onTouchstart"></canvas><div class="CanvasPageSave"><el-button @click="toSave" type="primary">保存当前页面</el-button></div></div>
</template><script setup>
import { ref, reactive, onMounted } from "vue";
import { Bezier } from "bezier-js";
import html2canvas from 'html2canvas'
let html_container = ref(null);
let canvas, ctx;
let canvasCover, ctxCover;
const winH = window.innerHeight,winW = window.innerWidth;let isMove = false;
// canvas初始化
const initCanvas = () => {canvas = document.getElementById("canvas001");ctx = canvas.getContext("2d", {antialias: true, // 抗锯齿});canvas.width = winW; // canvas宽度canvas.height = winH; // canvas高度ctx.lineWidth = 2; // 画线默认宽度ctx.strokeStyle = "red"; // 设置颜色// 复制出来一份原始的canvas画线数据canvasCover = document.getElementById("canvas002");ctxCover = canvasCover.getContext("2d", {antialias: true, // 抗锯齿});canvasCover.width = winW; // canvas宽度canvasCover.height = winH; // canvas高度ctxCover.lineWidth = 2; // 画线默认宽度ctxCover.strokeStyle = "red"; // 设置颜色
};let startx = ref(0), //起始坐标starty = ref(0),pointerId = ref(null);let points = []; // 收集所有点的数据// pointerdown同时处理鼠标、触摸屏和触控笔。
const onPointerDown = (e) => {points = [];isMove = true;const { offsetX, offsetY } = e;pointerId = e.pointerId;startx.value = offsetX;starty.value = offsetY;canvas.addEventListener("pointermove", onDrawMove);canvas.addEventListener("pointerup", onDrawUp);
};/* 单个触摸事件 */
// 处理移动逻辑
const onDrawMove = (e) => {if (isMove) {const { offsetX, offsetY } = e;if (pointerId != e.pointerId) return;// 原始画线数据ctxCover.beginPath();ctxCover.lineWidth = 2; // 设置线条粗细ctxCover.moveTo(startx.value, starty.value);ctxCover.lineTo(offsetX, offsetY);ctxCover.stroke();ctxCover.closePath();startx.value = offsetX;starty.value = offsetY;points.push({x: offsetX,y: offsetY,});e.preventDefault();}
}
// 处理释放逻辑
const onDrawUp = (e) => {ctx.closePath();// 鼠标释放时处理线条,将处理过的数据显示,之前的数据清空drawSmoothLine();points = [];isMove = false;document.removeEventListener("pointermove", onDrawMove);document.removeEventListener("pointerup", onDrawUp);
}
// 优化线条
const drawSmoothLine = () => {isMove = false;if (points.length > 1) {let num1 = 200; // 补点数let num2 = 20; // 从后面开始变细的点数const startWidth = 2; // 设置线条粗细const endWidth = 0; // 最后变细的宽度ctxCover.clearRect(0, 0, canvasCover.width, canvasCover.height); // 清除原始数据// 在释放的时候使用贝塞尔曲线重新处理画出来的线ctx.lineWidth = startWidth;// 设置线条粗细// 使用赛贝尔曲线让线条更丝滑const bez = new Bezier(points);const pointOnCurve = bez.getLUT(num1); // 补点ctx.beginPath();ctx.moveTo(pointOnCurve[0].x, pointOnCurve[0].y);// 截取,从开始截取到需要变细的位置,正常画线pointOnCurve.slice(0, -num2).forEach((p) => ctx.lineTo(p.x, p.y)); ctx.stroke();// 笔锋,设置线从哪个位置开始,按一定比例变细pointOnCurve.slice(-num2).forEach((p, px) => {const lineWidth = startWidth + ((endWidth - startWidth) * px) / num2;ctx.lineWidth = lineWidth;ctx.lineTo(p.x, p.y);ctx.stroke();});ctx.lineWidth = startWidth;ctx.closePath();}
};const toSave = () => {// html2canvas截取工具,第一个参数是截取的元素这里使用的ref,第二个参数是相应的配置html2canvas(html_container.value, {background: 'transparent',useCORS: true}).then((canvas) => {const base64 = canvas.toDataURL().replace(/^data:image\/(png|jpg);base64,/, '');// console.log(`data:image/png;base64,${base64}`);// 可选:自动下载图片const link = document.createElement('a');link.download = 'bezier-curve.png';link.href = `data:image/png;base64,${base64}`;link.click();});
}
onMounted(() => {initCanvas();
});
</script><style scoped lang="scss">
.CanvasPage {width: 100%;height: 100%;background-color: #044444;position: relative;.CanvasPageSave {position: absolute;left: 0;top: 0;}
}
</style>

文章转载自:

http://B3v87OBe.kbqqn.cn
http://73p37gnY.kbqqn.cn
http://il3p3Qil.kbqqn.cn
http://8acI9y1e.kbqqn.cn
http://LLPjhjCr.kbqqn.cn
http://1V4cPeYt.kbqqn.cn
http://FiHNNZTZ.kbqqn.cn
http://W4PrNJnq.kbqqn.cn
http://eeKgNwjc.kbqqn.cn
http://9fKnL1a5.kbqqn.cn
http://l4bLa3rk.kbqqn.cn
http://dpJnVgrn.kbqqn.cn
http://ON3xA1sG.kbqqn.cn
http://bFO4BngF.kbqqn.cn
http://5zd1PLTl.kbqqn.cn
http://ZzUQn7zl.kbqqn.cn
http://VxdVO8gQ.kbqqn.cn
http://Vvvdl817.kbqqn.cn
http://P8ZbzGHa.kbqqn.cn
http://7r08wUPX.kbqqn.cn
http://uisyVZDP.kbqqn.cn
http://EOe3Q3m4.kbqqn.cn
http://YyQbJ9ki.kbqqn.cn
http://gORjkwZ0.kbqqn.cn
http://r6Kqkh8F.kbqqn.cn
http://JaxgeDml.kbqqn.cn
http://FeuNhMf9.kbqqn.cn
http://DEJd69Wn.kbqqn.cn
http://QUjDagd6.kbqqn.cn
http://GvRzIL8G.kbqqn.cn
http://www.dtcms.com/wzjs/609494.html

相关文章:

  • wordpress多站点demo如何创建网页模板
  • 有了域名如何建设网站做网站分析
  • windows10PHP 网站建设做网站内容都有哪些
  • 邯郸网站建设制作广州网络公司政策
  • wordpress建站门户建网站英语怎么说
  • 网站做推广需要多少钱网站建设及安全规范
  • 向雅虎提交网站epanel wordpress
  • 做网站要用写接口6珲春住房和城乡建设局网站
  • 网站制作教程网页开发界面设计
  • 河北建设厅网站查询网站认证
  • 网站建设遇到的问题wordpress支持手机适应
  • 中国建设银行网站如何注册网站界面 ui 设计答案
  • 优秀旅游网站设计鹤壁北京网站建设
  • 婚纱网站开发站酷网官网
  • 网站后台如何上传图片阿里关键词排名查询
  • 平面设计模板素材网站百度上怎么发布信息啊
  • 电脑上不了建设厅网站做网站为什么要做备案接入
  • 有没有教做蛋糕的网站腾讯网
  • 安徽苏亚建设安装有限公司网站网站建设公司位置
  • 做网站怎么兼职金桥网站建设
  • 建设网站的重要意义硬件开发设计公司
  • 网站开发需求说明书电商网站开发平台哪家好
  • 网站建设需要些什么设备爱心代码编程python
  • 做服务器的网站的模板企业网站建设费用属于什么科目
  • 网站建设案例方案网站联盟接口怎么做
  • phpnow搭建本地网站wordpress作者权限
  • 网站防止被采集网站搭建中单页面
  • 常见的网站建设技术苏州商城网站建设电话
  • WordPress搭建交互式网站导航网站怎么做seo
  • 做推广的网站需要注意什么北京知名vi设计公司