WinForm 实现手写签名功能(流畅不卡顿,支持触摸屏,自动保存至本地)

242 阅读3分钟

前言

在工业控制、电子签章、客户确认等场景中,手写签名功能非常常见。本文将介绍如何使用 C# WinForm 开发一个流畅、不卡顿的手写签名控件,并实现自动保存签名到本地的功能,同时兼容触摸屏设备

项目简介

该项目基于 WinForm 实现了一个手写签名板功能,具有以下特点:

  • 支持鼠标和触摸屏输入
  • 可自定义画笔属性(颜色、透明度、宽度)
  • 签名后自动保存为图片文件
  • 图片按日期分类存储
  • 界面简洁、操作方便
  • 源码开源,适合二次开发与学习

核心功能实现

1、定义画笔相关变量

我们使用 GraphicsPath 来记录用户绘制的路径,并通过变量控制画笔的颜色、透明度和宽度。

private System.Drawing.Drawing2D.GraphicsPath mousePath = new System.Drawing.Drawing2D.GraphicsPath();
private int myAlpha = 100; // 透明度
private Color myUserColor = Color.Black; // 默认颜色
private int myPenWidth = 10; // 画笔宽度
public Bitmap SavedBitmap; // 保存的签名图片

提示:你可以根据需要动态修改 myAlpha(0~255)、myUserColormyPenWidth 来改变画笔效果。

2、绘图事件处理

鼠标按下开始绘图

private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
    mousePath.Reset();
    mousePath.StartFigure();
}

鼠标移动进行绘制

private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Left)
    {
        mousePath.AddLine(e.X, e.Y, e.X, e.Y);
        using (Pen pen = new Pen(Color.FromArgb(myAlpha, myUserColor), myPenWidth))
        {
            pictureBox1.CreateGraphics().DrawPath(pen, mousePath);
        }
    }
}

鼠标释放结束绘制

private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
    mousePath.CloseFigure();
}

3、保存签名至本地

签名完成后,使用 DrawToBitmap 方法将 PictureBox 内容保存为 Bitmap,然后按照日期创建文件夹,保存为 JPG 格式。

SavedBitmap = new Bitmap(pictureBox1.Width, pictureBox1.Height);
pictureBox1.DrawToBitmap(SavedBitmap, new Rectangle(0, 0, pictureBox1.Width, pictureBox1.Height));

string path = Path.Combine(System.Environment.CurrentDirectory, "sign", DateTime.Now.ToString("yyyy-MM-dd"));
string name = DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".jpg";

if (!Directory.Exists(path)) Directory.CreateDirectory(path);

SavedBitmap.Save(Path.Combine(path, name), ImageFormat.Jpeg);

this.DialogResult = DialogResult.OK;
pictureBox1.Invalidate(); // 清空绘图区域

项目效果

如上图所示,用户可以在 PictureBox 区域自由书写签名,系统会自动保存到本地目录。

适用场景

工厂MES系统中的客户签字确认

POS终端、自助服务机上的电子签名

教育考试系统的考生签名录入

各类需要电子化签名的业务流程

总结

通过本文的介绍,了解了如何使用 C# WinForm 实现一个简单、高效、兼容触摸屏的手写签名控件。该方案具备良好的扩展性,可进一步结合数据库管理、网络传输等功能,开发完整的电子签名系统。

如果你正在开发智能制造、工业控制系统、POS终端等项目,这个签名控件将是一个非常实用的小工具。

提示:建议在实际部署前对路径权限、异常处理、资源释放等细节做进一步完善,以提高程序的健壮性和用户体验。

最后

如果你觉得这篇文章对你有帮助,不妨点个赞支持一下!你的支持是我继续分享知识的动力。如果有任何疑问或需要进一步的帮助,欢迎随时留言。

也可以加入微信公众号 [DotNet技术匠] 社区,与其他热爱技术的同行一起交流心得,共同成长!

优秀是一种习惯,欢迎大家留言学习!

作者:小小工具箱

出处:blog.csdn.net/m0_62355555/article/details/124996580

声明:网络内容,仅供学习,尊重版权,侵权速删,歉意致谢!