canvas元素

html2canvas 实现dashed虚线边框

匿名 (未验证) 提交于 2019-12-02 21:53:52
html2canvas是一个将html元素生成canvas的库,绘制的canvas大部分样式和CSS一致。比如截止1.0.0-alpha.12,虚线边框依然绘制为实线,border-collapse依然有问题。 这里根据github issues里的一个思路,模拟实现了dashed边框效果。 适用情况:单独边框较多,即不是完整边框,同时不考虑border-radius 1、首先,在html2canvas绘制前,找出需要绘制canvas的元素中的所有虚线边框的 方向和位置 findDashedBorders = (page) => { const tds = page.querySelectorAll("td"); const borders = []; tds.forEach(td => { const computedStyle = window.getComputedStyle(td); const borderStyle = computedStyle.borderStyle ? computedStyle.borderStyle.split(' ') : []; const dashedIndex = findAll(borderStyle, 'dashed'); if (dashedIndex.length) { const rect = td

HTML5--canvas与svg的使用

匿名 (未验证) 提交于 2019-12-02 20:32:16
一、Canvas canvas是HTML5中新增一个HTML5标签与操作canvas的javascript API,它可以实现在网页中完成动态的2D与3D图像技术。<canvas> 标记和 SVG以及 VML 之间的一个重要的不同是,<canvas> 有一个基于 JavaScript 的绘图 API,而 SVG 和 VML 使用一个 XML 文档来描述绘图。SVG 绘图很容易编辑与生成,但功能明显要弱一些。 canvas可以完成动画、游戏、图表、图像处理等原来需要Flash完成的一些功能。 1.创建canvas <canvas id="draw" width="600" height="600"></canvas>  在html中创建一个canvas标签,最好再在标签本身中设置宽高,如果用其他方式设置宽高会有0.5的位移差 var draw=document.getElementById("draw"); //获取画布元素 var draws=draw.getContext("2d"); //给画布一个绘制环境,2d表示在2d环境下绘制 //draws返回的是一个对象    2.绘制 //绘制线条 //设置线宽 draws.lineWidth = 10; //设置线的颜色 draws.strokeStyle = "blue"; draws.moveTo(0,0); //移动画笔到0

2019.10.29 自适应神器------Canvas Scaler (画布定标器)

孤者浪人 提交于 2019-12-02 18:18:16
来源: https://www.cnblogs.com/morning-lee/p/7135782.html 今天舶主翻阅了大神们的文章和书籍学习一下UGUI牛逼的自适应部分。。。两个字 ,强大。。。。。 先来看一下Unity官方给Canvas Scaler的定义"The Canvas Scaler component is used for controlling the overall scale and pixel density of UI elements in the Canvas. This scaling affects everything under the Canvas, including font sizes and image borders."。画布定标器用于画布上UI元素的整体缩放比例和像素密度。该缩放比例会影响画布中的所有东西,包括字体大小和图像边界。 为了适应不同的分辨率,我们可能会允许适当的UI整体性的缩放,外加一些尽可能少的布局微调。这样就能达到一个比较理想的效果。Unity中 Canvas Scale就是负责该功能的组件。 下面我们就打开这个组件看一看,Canvas Scaler的 UI Scale Mode(UI缩放模式)有三个值:constant pixel size、scale with screen size 和constant

监听尺寸元素变化

﹥>﹥吖頭↗ 提交于 2019-12-02 18:13:46
Vue.directive('resize', { bind(el, binding) { let width = '', height = ''; function get() { const style = document.defaultView.getComputedStyle(el); if (width !== style.width || height !== style.height) { binding.value({width, height}); } width = style.width; height = style.height; } el.__vueReize__ = setInterval(get, 200); }, unbind(el) { clearInterval(el.__vueReize__); }, }); <div id="canvas-wrap" v-resize="redraw"> <canvas></canvas> </div> 来源: https://www.cnblogs.com/luoguixin/p/11757037.html

处理浏览器兼容所遇到的问题总结(一)

前提是你 提交于 2019-12-02 16:31:48
注意:因为浏览器问题,重新定义Array.prototype.indexOf…等函数时,一定要注意符合原始定义,不要随便用别的实现方式定义,否则可能会影响插件调用 之前开发项目时,前端调试都是以google chrome浏览器为准,现需处理浏览器兼容问题,现将遇到的问题总结如下: 一. firefox 浏览器div下的table无水平滑动条 < div id = "tableContainer" style= "height:420px;width:100%;" class = "table-responsive" > <table id = "demoTable" class = "table table-condensed table-bordered" style= "width:1650px;" > 原因:bootstrap中添加了样式 .table { max-width : 100 % ; } 解决方法:去掉table中的table类属性。 二. IE下无法用AJAX表单上传文件 解决方法:(1)用form表单post提交上传文件 (2)将 <meta http-equiv="x-ua-compatible" content="ie=7" /> 替换为 <meta http-equiv="X-UA-Compatible" content="IE=Edge" /> <

canvas

泪湿孤枕 提交于 2019-12-02 12:19:01
1、通过标签建立 <canvas id="myCanvas" width="200" height="100"></canvas> 2、通过js绘制图形 canvas 元素本身是没有绘图能力的。所有的绘制工作必须在 JavaScript 内部完成: 3、通过id寻找canvas 元素: var c=document.getElementById("myCanvas"); 4、创建 context 对象: var cxt=c.getContext("2d"); getContext("2d") 对象是内建的 HTML5 对象,拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。 来源: https://www.cnblogs.com/carry-2017/p/11745176.html

canvas绘制图片模糊

前提是你 提交于 2019-12-02 10:49:40
一、关于canvas (1)canvas绘制的是位图,而我们平常用的jpg,png也是位图。 位图又叫像素图或栅格图,它是通过记录图像中每一个点的颜色、深度等信息来存储和显示图像。具象一点讲,可以将位图想象成一个巨大的拼图,这个拼图有无数的拼块,每个拼块代表了一个纯色的像素点。理论上,1个位图像素对应着1个物理像素。 (2)canvas的width和height属性 <canvas width="600" height="300" style="width: 300px; height: 150px"></canvas> style中的width和height分别代表canvas这个元素在界面上所占据的宽高,即样式上的宽高 attribute中的width和height则代表canvas实际像素的宽高 canvas默认的width和height是300 * 150,对其设置了css之后,canvas会根据设置css宽高进行缩放(注意不是裁剪) 二、原因 因为 canvas 不是矢量图,而是像图片一样是位图模式的。高 dpi 显示设备意味着每平方英寸有更多的像素。也就是说二倍屏,浏览器就会以2个像素点的宽度来渲染一个像素,该 canvas 在 Retina 屏幕下相当于占据了2倍的空间,相当于图片被放大了一倍,因此绘制出来的图片文字等会变模糊。 三、解决 (1)在浏览器的

使用canvas生成含有微信头像的邀请海报没有微信头像

与世无争的帅哥 提交于 2019-12-01 20:34:07
最近做了一个微信内访问的H5页面,其中的结果页想让用户进行朋友圈分享转发,网上搜索资料,得出解决思路,用canvas将页面绘制生成图片, 问题:canvas 图片跨域。 解决过程(填坑历程): 1.从网上存在如图解决办法 img.crossOrigin = "" (专业采坑,数年)。亲测无效。很是不解。 2.网上也存在后端服务解决 设置header头,或者nginx 服务配置等 允许访问。但是,存在问题(图片大部分为了优化,都会存放在第三方cdn.上面。这是第三方的配置,是否允许,自己很难控制) 3.解决办法:采用所有图片路径,转化为base64流,来处理。相对于本地图片了。这也可以就避开了跨域问题。 最后个本解决方法:也没有采用第3种保存本地,这样会增加本地图片而且会存在本地跟微信端没有同步更新的问题,不是用户最新的头像。是采用远程下载后直接绘制输出图片,这样图片就变成本地图片,解决canvas绘制图片不支持跨域问题。 wxheadimg.aspx 页面代码: if (!string.IsNullOrEmpty(Request.QueryString["data"].ToString())) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Request.QueryString["data"]

使用canvas画布生成二维码

对着背影说爱祢 提交于 2019-12-01 19:01:59
1. 基本用法 <canvas>标签只有两个属性-----width和height CSS: <canvas class="qrcode" width="100%" height="100%"></canvas> <canvas>元素只是创造了一个固定大小的画布,要想在它上面绘制内容,我们需要找到它的渲染上下文, <canvas>元素有一个叫做 getContext()的方法,而这个方法就是用来获得渲染上下文和它的绘画功能。 JS: imageToCanvsa () {   let that = this   let canvas = document.createElement('canvas') // 获取canvas对象(通过选择器选择canvas元素)   let ctx = canvas.getContext('2d') // 获得渲染上下文和他的绘画功能   // 将二维码的canvas转化成base64   let qrcode = new Image ()   qrcode.crossOrigin = 'Anonymous'   qrccode.src = document.querySelector('.qrcode').toDataURL()   let img = new Image()   img.crossOrigin = 'Anonymous'  

h5 的canvas绘图

北城余情 提交于 2019-11-30 09:38:49
文章地址: https://www.cnblogs.com/sandraryan/ canvas是一个标签,可用于绘制复杂图形,渲染效果比普通DOM快 某些低版本浏览器不支持 canvas 使用原生几乎不借助框架 目前多用于:数据统计图,地图;小网页游戏、 canvas默认样式是300*150,背景白色,支持标签的所有样式,但一般不添加3D变换可能会影响原有内容 canvas 宽高可以通过属性直接设置 canvas 标签原生节点对象包含一个getContext函数,返回一个对象, 返回的对象中包含了一系列与绘图有关的属性和方法,要实现对应绘图效果,只需要从这个对象中调用对应函数 一个页面中可以出现多对canvas标签,使用不同的canvas节点对象的getContext值绘制的图形会渲染在对应的标签上 举个栗子 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style> canvas { box-shadow