前言
老规矩,先看效果:
在手写签名窗口中,用户可以选择线条粗细来签名,点击清空按钮可以清空画布,点击撤销按钮可以撤销一笔,点击恢复按钮可以撤销上一步进行的清空或撤销操作,点击保存按钮可以将写好的签名保存到自定义的位置。
那么,这样一个手写签名器是如何实现的呢?
一、实现思路
界面布局设计:一个画布,用于用户写签名的区域,最下方一行用作可选项,从左至右依次为:标签文本、下拉列表(选择线条粗细)、撤销按钮、恢复按钮、清空按钮、保存按钮。
组件逻辑:
- 画布区域,获取用户鼠标点击的实时位置,将一次鼠标左键点击和松开作为一次画布操作,即一笔。规定画布内只画线。
- 粗细选择:设定好指定的粗细选项,获取到用户所选之后传递给画布和其他按钮
- 清空按钮:将画布上所有的线删除
- 撤销按钮:将最后一笔删除,并保存状态
- 恢复按钮:将撤销的一笔操作恢复,并更新状态
其中,按钮逻辑应该能保证所有的按钮之间在操作后都可以执行。清空后再撤销和清空无反应,其他情况的操作正常。
签名质量优化:
画线时,应用抗锯齿和平滑等操作,提升质量。