怎么用canvas实现在线签名的示例代码?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!
随着计算机和网络技术的飞速发展,在线签名技术越来越多的被应用在无纸化办公中,这种直观便利的操作不仅可以大幅提升办公效率,而且使用数字化存储方式,避开了传统的纸质签字存储查阅困难等问题。在我们在日常生活中,已经有很多场景使用在线签名技术,例如:pos机刷卡签字、快递签收签字、银行或机关单位业务办理签字等。最近在做公司的业务办理需求,里面也涉及到在线签名,我们采用的 Canvas 技术实现,接下来,让我们来聊聊如何使用 Canvas 实现在线签名吧!
Canvas 是 HTML5 新增的元素,用于在网页上绘制图形,它由 Apple 在 Safari 1.3 Web 浏览器中引入,之所以对 HTML 扩展的原因在于, HTML 在 Safari 中的绘图能力能为 Mac OS X 桌面的 Dashboard 组件所使用,并且 Apple 也希望有一种方式可以在 Dashboard 中支持脚本化的图形。Firefox 1.5 和 Opera 9 这两个浏览器也紧随 Safari 的引领,开始支持 Canvas 。
现在,Canvas 标签已经是 HTML5 最伟大的改进之一,因为它可以让我们在不使用图片的情况下实现网页的图形设计。它就像一块画布,本身没有绘制能力,但却把绘制 API 展现给客户端 JavaScript,我们借助 JavaScript 的支持,在画布范围内尽情发挥,达到想要的效果。
这个功能无论是 Canvas、SVG 或是 Flash,都可以实现,但是我们为什么选择了 Canvas 呢?
首先,由于功能上我们需要支持移动平台,所以 Flash 我们就可以直接弃掉,它在移动端方面并没有得到友好的支持,但 Canvas 和 SVG 都具有很好的跨平台能力,我们如何抉择,下面我们来对比一下。
Canvas 基于像素,提供 2D 绘制函数,提供的功能更原始,适合像素处理、动态渲染和大数据量绘制,可控性高,绘制完了基本不记录过程,绘图性能会更好一点,各大厂商也早都实现了canvas的硬件加速机制。
SVG 为矢量,提供一系列图形元素,功能更完善,建立了一大堆可交互对象,本性长于交互,但性能会弱些,更适合静态图片展示,高保真文档查看和打印的应用场景。
两者各有自己的擅长领域, 基于以上,我们选择了 Canvas 来实现签字功能。
下面,我们来看一下实现效果。
了解了 Canvas 来源、技术选型和最终呈现效果,接下来、我们会从创建、绘制、监听、重绘、图片处理等五部分进行撰写,让我们一起走进 Canvas 绘制的世界。
首先,我们需要判断浏览器是否支持 Canvas :
isCanvasSupported=():布尔=比;{ 让elem=document.createElement(& # 39;帆布# 39;); 返回! ! (elem。getContext,,elem.getContext (& # 39; 2 d # 39;)); }
然后根据判断结果选择创建帆布画布还是展示提示
{isCanvasSupported吗? & lt;帆布ref={帆布=比;(这一点。帆布=画布)高度}={canvasHeight}={canvasWidth}宽度比; :对不起,当前浏览器暂不支持此功能! }
我们知道,每个帆布节点都有一个对应的上下文对象,我们可以通过画布对象的getContext()方法,直接把量字符串“二维”作为唯一的参数传递给它来获取。接下来,我们通过裁判获取帆布元素,再通过getContext()方法得到一个画布上绘图的环境。
cxt.beginPath ();
然后设置当前线条的宽度:
cxt。线宽=5;
设置线条的颜色:
cxt。strokeStyle=& # 39; # 000 & # 39;;
通过函数和画线,我们来绘制一条线
cxt.moveTo (0,0); cxt.lineTo (150 0);//绘制已定义的路径 cxt.stroke ()
但是,我们发现绘制的线条比较生硬
这时,我们可以通过lineCap改变线条末端线帽的样式,为每个末端添加圆形线帽,减少线条的生硬感