C#Winform实现手写录入签名与保存为透明png图片

  • 原理
  • 效果图
  • 实现代码

原理

在Winform窗体程序中实现鼠标手写输入其实就是画线,基本实现原理是放置一个PictureBox控件,订阅此控件的MouseMove和MouseDown事件,然后通过System.Drawing.Drawing2D.GraphicsPath在MouseMove事件中不断的画线。

效果图

实现代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Imaging;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows.Forms;namespace WindowsFormsApplication2
{public partial class Form1 : Form{#region 定义变量private System.Drawing.Drawing2D.GraphicsPath mousePath = new System.Drawing.Drawing2D.GraphicsPath();//画笔透明度private int myAlpha = 100;//画笔颜色对象private Color myUserColor = new Color();//画笔宽度private int myPenWidth = 3;//签名的图片对象public Bitmap SavedBitmap;#endregionpublic Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){string url = Cachet.CreatPublicSeal.CreatSeal("青岛弯弓信息技术有限公司", "数据服务部", "e:\\seal");this.pictureBox1.Image = Image.FromFile(url);Console.WriteLine(url);}private void Form1_Load(object sender, EventArgs e){this.pictureBox1.BackColor = Color.White;       //设置图片初始背景色为白色}#region 鼠标移动事件处理private void pictureBox1_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);}}pictureBox1.Invalidate();}#endregion#region 鼠标按下事件处理private void pictureBox1_MouseDown(object sender, MouseEventArgs e){if (e.Button == System.Windows.Forms.MouseButtons.Left){mousePath.StartFigure();}}#endregion#region 图片空间画图事件处理private void pictureBox1_Paint(object sender, PaintEventArgs e){try{myUserColor = System.Drawing.Color.Blue;myAlpha = 255;Pen CurrentPen = new Pen(Color.FromArgb(myAlpha, myUserColor), myPenWidth);e.Graphics.DrawPath(CurrentPen, mousePath);}catch { }}#endregion#region 把图片中的内容保存为透明png图片private void btnSave_Click(object sender, EventArgs e){SavedBitmap = new Bitmap(pictureBox1.Width, pictureBox1.Height);pictureBox1.DrawToBitmap(SavedBitmap, new Rectangle(0, 0, pictureBox1.Width, pictureBox1.Height));#region 保存为透明的png图片Bitmap bmp = SavedBitmap;BitmapData data = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadWrite, bmp.PixelFormat);int length = data.Stride * data.Height;IntPtr ptr = data.Scan0;byte[] buff = new byte[length];Marshal.Copy(ptr, buff, 0, length);for (int i = 3; i < length; i += 4){if (buff[i - 1] >= 230 && buff[i - 2] >= 230 && buff[i - 3] >= 230){buff[i] = 0;}}Marshal.Copy(buff, 0, ptr, length);bmp.UnlockBits(data);bmp.Save("e:\\zhenglibing.png", ImageFormat.Png);#endregion}#endregion#region 清空图片的内容private void btnClear_Click(object sender, EventArgs e){pictureBox1.CreateGraphics().Clear(Color.White);mousePath.Reset();}#endregion}
}

C#Winform实现手写录入签名与保存为透明png图片相关推荐

  1. 冯杰的手写艺术签名怎么写好看

    导读:今天来给大家分享[冯杰的手写艺术签名怎么写好看]有叫这个名字的人可以来看看了! 一.学习签名首先是要决定是写在哪些地方; (1)用在普通的场合,想要一个比较独特的签名; 在这种时候,想要一个与众 ...

  2. 在线签名、canvas手写在线签名——小程序端实现在线签名,手写电子签名canvas

    在线签名.canvas手写在线签名--小程序端实现在线签名,手写电子签名canvas 近期公司准备接一个政府的小项目,里头有一个在线签名的需求,老板让我研究一下.于是就...开始思考: 在线手写签名, ...

  3. uniapp - 实现微信小程序电子签名板,横屏手写姓名签名专用写字画板(详细运行示例,一键复制开箱即用)

    效果图 实现了在uniapp项目中,微信小程序平台流畅的写字签名板(也可以绘图)功能源码,复制粘贴,改改样式几分钟即可搞定! 支持自动横屏.持预览,真机运行测试非常流畅不卡顿. 基础模板 如下代码所示 ...

  4. jquery手写轮播图_用jquery实现图片轮播怎么写呢求指教

    展开全部 *{ margin: 0; padding: 0; } ul{ list-style:none; } .slideShow{ width: 620px; height: 700px;     ...

  5. poi插入图片浮于文字上方_Word插入手写签名

    Word插入手写签名 通常情况下,我们都需要将文本打印出来,签字,扫描,上传,提交.但在国内外很多公司并不这么做.那大家都是怎么处理的呢? 正文 此处我们需要重点说明,如果是基金.合同.工资等相对比较 ...

  6. MATLAB 实现电子版的手写签名

    Ques:有时候我们需要在电子文档上实现手写的签名,但是又没有相关的文档,我们应该如何解决这个问题呢? 先看看实验结果 程序: %% 选取图像[filename, pathname] = uigetf ...

  7. word中插入手写的电子签名

    1.将手写的签名拍照上传到电脑 2.打开word,插入签名图片 3.双击图片,[环绕文字]-[浮于文字上方] 4.[校正]-[亮度/对比度]中选择一个合适的样式 5.[颜色]-[重新着色]-选个[黑白 ...

  8. python模拟手写笔迹_原笔迹手写实现平滑和笔锋效果之:笔迹的平滑(一)

    之前研究过一种用于 模拟真实 手写笔迹签名 的算法,  要求能够保持原笔迹平滑,并有笔锋的效果. 在网上看了一些资料, 资料很多, 能够达到用于正式产品中的效果的一个都没有找到. 但是即使按照这篇文章 ...

  9. python实现手写笔迹,手写识别,语音识别,语音生成

    文章目录 1,先说思路 2,实现截图 3,祭出源代码 1,先说思路 1,应该实现对于手写笔迹的记录,生成字迹截图 1.1怎么实现呢?在定点和移动中的鼠标所在处画一条线,鼠标按住移动的话,线也会跟着移动 ...

  10. 开源O2OA办公平台:手写签批介绍

    概述 手写签批是建立在O2OA开发平台的公文编辑器组件基础上,允许用户在公文内容上进行手写.签名.批注.文字输入.擦除的一系列功能.手写签批功能可以直观的展现每位处理人对公文内容的批注,有效的提高办公 ...

最新文章

  1. 社交电商风潮起,中小卖家何处去
  2. 在国外读phd 的时候和supervisor沟通的时候需要注意的点
  3. Django学习笔记2
  4. bootstrap-multiselect 手动触发onChange事件
  5. (33)SystemVerilog语言编写二分频
  6. 【mac】mac 安装nginx
  7. 新年春节项目海报设计,PSD分层模板,帮你顺利交稿!
  8. Abp vnext Web应用程序开发教程 10 —— 书与作者的关系
  9. 打工的人面对老板是没有溢价权的
  10. h5页面 请在微信客户端打开链接_如何看到“请在微信客户端打开链接”页面的源码?...
  11. C++ 面试实战经验分享
  12. Tomcat、Servlet、JSP、EL和JDK版本对照以及各版本Tomcat下载
  13. c++课程设计自助点餐系统
  14. 猿辅导python编程课网课怎么样_猿辅导网课怎么样,一个过来人经历告诉你
  15. Unity3d 制定游戏循环的策略
  16. 快速批量创建文件夹、文件的快捷键
  17. 安卓手机内置NFC模块的使用和开发
  18. 如何测试数字硅麦软件,硅麦克风技术规格及测试方法
  19. 【第十篇】商城系统-性能测试
  20. 什么是自动出价?它的优势是什么?

热门文章

  1. win7打开桌面计算机很慢,鼠标右键刷新桌面很慢怎么办?Win7右键刷新反应特别慢的解决方法...
  2. 等红灯时使用车轱辘扫描车牌
  3. Scrum立会报告+燃尽图(十月二十八日总第十九次)
  4. 苹果笔记本电脑亮度无法调节_macbook怎么调节屏幕亮度|苹果笔记本调显示器亮度方法...
  5. QuickFlow-如何通过QFD and ExecuteCode获取其他列表数据
  6. 怎么获取股票历史数据?获取股票历史数据Excel
  7. oracle 挖掘日志,使用Oracle的Logminer工具进行日志挖掘
  8. 如何刷新bios?在windows系统上刷新bios的方法
  9. TSL2591STM32固件库开发
  10. 抓包分析TCP首部,三次牵手四次分手过程,序列号确认号计算,为什么握手是三次挥手是四次?