怎么用帆布实现在线签名的示例代码

  

怎么用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 绘制的世界。

首先,我们需要判断浏览器是否支持 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改变线条末端线帽的样式,为每个末端添加圆形线帽,减少线条的生硬感

怎么用帆布实现在线签名的示例代码