web 手寫板是個比較常見的需求了,多用在需要用戶進行簽名認證的業務中。
canvas 作為 H5 的新標簽,適用于 動態繪制 復雜的 高分辨率 圖形,是此類需求的最好方案。
但在實際開發中,遇到了幾個問題:
這篇圍繞這幾個問題進行解答說明。
MDN 提供了 Canvas 入門的詳細文檔,基本常用 API 的都能直接找到。
創建 canvas 畫布及畫筆樣式
定義“畫筆”事件
首先,結合 getBoundingClientRect 能獲取畫筆在畫布中的坐標值
根據畫筆繪制過程,拆分為三個狀態:開始繪制(記錄 canvas 起始點),筆跡跟隨,繪制完成(事件釋放)
效果如下
筆跡跟隨
上面雖然完成了功能,只是簡單的 Demo,實際更偏向使用更穩定的第三方插件: jSignature 是個比較好的選擇。
它依賴 jQuery ,對于不支持 canvas 的瀏覽器有降級處理,同時對筆跡繪制,圖形導出有優化,對比我們 Demo,其有更好的穩定性和擴展性。
jSignature 提供了線上 demo,可以直接看效果。
偽代碼如下(Vue):
最后頁面效果如下:
jSignature-demo
如何切換橫屏
這個問題很簡單,對 css 添加個屬性 transform 旋轉屬性便可,但會發現旋轉 90° 后頁面出現了異常:
旋轉異常
頂部導航欄欄,按鈕操作欄都消失了,畫布也錯位。
旋轉后,頁面顯示異常
這是因為旋轉的整個元素按著頁面中心進行旋轉(橫豎屏切換),之后需要重新對頁面旋轉后的寬高進行置換:
由于寬高調整后,旋轉的中心改變了,需要對偏移量進行修復。
旋轉中心
這個偏移量起始先對未旋轉前的頁面計算旋轉中心點(已重置過寬高),假設坐標原點在左上角,那么坐標值為:(320,180)
當旋轉 90° 后,坐標值更換為:(180,320),需要對 320-180=140 進行偏移重置。那么 css 樣式更新為:
最后旋轉后的頁面將恢復正常:
偏移重置后
畫布錯位
當繪制簽名時,會發現畫布顯示異常,繪制位置和實際筆跡出現的位置不同(被旋轉 90°),而且畫布也非旋轉后的大小。
畫布錯位
旋轉后畫布實際區域如下:
畫布實際區域
雖然 畫板區域 是在頁面旋轉后生成的,但畫布所掛載的節點受旋轉的影響。所以對于畫布需要“撤銷”旋轉的 90° 影響,同時畫布在生成前需要根據旋轉后實際呈現的高寬指定生成。
代碼如下:
最后,簽名繪制和筆跡呈現保持了一致。
雖然上面對畫布區域進行了“額外處理”使整個頁面顯示正常,但實際交互中會有一些 tip 或者彈框提示,這些元素由于是新掛載到頁面某些節點上的,沒有受旋轉影響,就會有如下非預期展示:
tip異常
而我們不可能見一個修改一個,需要全局地觀察這類元素變動,進行錯位展示的重置。
這時我們可以借助 MutationObserver 來對這些元素進行監聽,來反轉 90° 重置:
MutationObserver 監聽
解決上述幾個問題后,最后效果如下:
完整效果
做一個手寫簽名功能輕松幾步實現,保存成圖片提交,網上招商到這個js庫jq-signature,分享一下。
以下內容來自插件官方
插件介紹
jq-signature是一款基于HTML5 canvas的支持移動觸摸設備的在線簽名和涂鴉jQuery插件。可以使用該jQuery插件來制作在線簽名或涂鴉板,用戶繪制的東西可以用圖片的形式保存下來,非常方便實用。
兼容瀏覽 Chrome Firefox Opera Safari IE10+
簡要教程
jq-signature是一款基于HTML5 canvas的支持移動觸摸設備的在線簽名和涂鴉jQuery插件。可以使用該jQuery插件來制作在線簽名或涂鴉板,用戶繪制的東西可以用圖片的形式保存下來,非常方便實用。關于使用HTML5 canvas制作涂鴉板的方法,可以參考《使用html5 canvas制作涂鴉畫板》,如何將繪制號的涂鴉圖片上傳到服務器可以參考《HTML5 canvas畫圖及圖片上傳服務器》。
使用方法
HTML結構
然后可以像下面這樣創建一個簽名區域。你可以使用HTML5的data-option來傳遞一些參數。
你可以創建兩個操作按鈕,分別用于清空畫板和保存簽名。
你可以使用一個空的<div>來顯示保存的簽名圖片。
初始化插件
在頁面加載完畢之后使用下面的方法來初始化該簽名插件。
配置參數
下面是該簽名插件的一些可用參數,這些參數同時也可以在data-attributes上使用:
原文:
http://www.htmleaf.com/html5/html5-canvas/201505281921.html
很多人問我,怎樣才能快速模仿簽名?特別是模仿出他人無法分辨的筆跡,今天教大家一招,您也可以筆跡模仿的!下面我來揭秘:
簡單的說,簽字模仿就要把握好三個“度”!即;
速度,角度,力度!
模仿筆跡的第一就是要研究原跡。仔細觀察原手跡,并注意他的手寫方式。即,角度!用心揣摩他的捏筆姿勢,“字如其人”每個人的簽名簽字角度都不同。甚至他的心情不同,簽字也有所不同!有些人不先觀察就盲目模仿筆跡,很可能犯明顯的錯誤。請注意以下這幾點:A看一下原被模仿簽名的弧線高度和大小。是瀟灑的龍飛鳳舞,還是小又精致靈巧?把弧線寫好是模仿簽名的主要任務。b仔細檢查被模仿簽字筆畫的結構,他們是否清晰,亂涂或擁擠不堪?有什么花招嗎?c檢查模仿字跡的坡度,是左邊還是右,他到底傾斜了多少?還有多少?d筆觸的鏈接位置。筆畫之間是否有很多重疊或空白?e,觀察簽名模仿者的書寫個性,即作者的書寫神韻!很多模仿筆跡的人沒有注意到這一點,只是盲目練習熟悉,外形寫的也很像,但缺乏神!那就是字跡被模仿的個性!
第二就是速度即加強實踐練習。如果您熟悉了簽名簽字,就需要大量練習。速度我符合原作者的書寫速度,快了也不行,慢了更不行!筆跡模仿要達到高水平,困難就超出了您的想象力。簽名很難被模仿,這就是為啥我們任然使用簽字來驗證許多法律文件的原因。練習時,請注意原始簽名和模仿簽名之間的細微差別,并進行進一步調整。直到您模仿字跡看起來自然并且神韻相似為止。我建議神似比形似更重要!
第三就是力度就是自信寫出來!字跡模仿書寫時,必須有足夠的信心一次完成,也就是一氣呵成,“速度”“角度”“力度”,不要花費的太長時間。自信的簽字看起來比真實的要真實的多,快速簽名,不要半途改變,千萬記住,不要修飾!最后溫馨提醒大家:模仿字跡模仿筆跡學會了只可救急,但不能從事違法罪行為!當面書寫,寫好拿走,模仿筆跡,模仿簽字 浙江杭州模仿簽名,簽名設計,技術保障,千萬別找到技術差的。技藝不成,反誤事!專業模仿代寫,各種簽名,簽字,可寫任何高難度文字及任何外國文字。相似度可達99.99%,希望此文能對你有所幫助!
轉載:http://www.mofangqianming.com/zhishi/21.html
*請認真填寫需求信息,我們會在24小時內與您取得聯系。