触摸屏幕签字,签批屏对接可不使用提供的SDK
2021/12/17 23:26:02
本文主要是介绍触摸屏幕签字,签批屏对接可不使用提供的SDK,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一个偶然机会得知,触摸屏可替代签批屏,其原理就是通过GraphicsPath来记录触摸过的坐标点,再通过Paint事件实时绘制到屏幕上,下面对类进行了封装,封装类似汉王签批屏的模式,主要流程如下:
1、初始化
/// <summary> /// 初始化 /// </summary> /// <param name="_signname"></param> /// <param name="_panel"></param> public void Init(string _signname, Panel _panel) { try { SignBox.Parent = _panel; SignBox.Left = 0; SignBox.Top = 0; SignBox.Width = _panel.Width; SignBox.Height = _panel.Height; SignBox.Paint += SignBox_Paint; SignBox.MouseDown += SignBox_MouseDown; SignBox.MouseMove += SignBox_MouseMove; SignName = _signname; } catch (Exception ex) { LogHelper.Debug(ex); } }
2、记录绘制轨迹
private void SignBox_MouseMove(object sender, MouseEventArgs e) { if (e.Button == System.Windows.Forms.MouseButtons.Left) { try { mousePath.AddLine(e.X, e.Y, e.X, e.Y); } catch (Exception ex) { MessageBox.Show(ex.Message); } } SignBox.Invalidate(); } private void SignBox_MouseDown(object sender, MouseEventArgs e) { if (e.Button == System.Windows.Forms.MouseButtons.Left) { mousePath.StartFigure(); } }
3、绘制
private void SignBox_Paint(object sender, PaintEventArgs e) { try { myUserColor = System.Drawing.Color.Black; myAlpha = 255; Pen CurrentPen = new Pen(Color.FromArgb(myAlpha, myUserColor), myPenWidth); e.Graphics.DrawPath(CurrentPen, mousePath); } catch (Exception ex) { LogHelper.Debug(ex); } }
4、保存签字信息
/// <summary> /// 签字 /// </summary> /// <returns></returns> public bool Sign() { bool Ret = false; try { if (mousePath.PointCount > 0) { using (SavedBitmap = new Bitmap(SignBox.Width, SignBox.Height)) { SignBox.DrawToBitmap(SavedBitmap, new Rectangle(0, 0, SignBox.Width, SignBox.Height)); SavedBitmap.Save(SignName); Ret = true; } } } catch (Exception ex) { LogHelper.Debug(ex); } return Ret; }
5、重签
/// <summary> /// 清除 /// </summary> public void Clear() { try { using (Graphics gra = SignBox.CreateGraphics()) { gra.Clear(Color.White); } mousePath.Reset(); } catch (Exception ex) { LogHelper.Debug(ex); } }
6、释放
/// <summary> /// 释放 /// </summary> public void Uinit() { try { if (SavedBitmap != null) SavedBitmap.Dispose(); if (mousePath != null) mousePath.Dispose(); } catch (Exception ex) { LogHelper.Debug(ex); } }
效果如图
这篇关于触摸屏幕签字,签批屏对接可不使用提供的SDK的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?