C#Winform实现手写录入签名与保存为透明png图片
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)用在普通的场合,想要一个比较独特的签名; 在这种时候,想要一个与众 ...
- 在线签名、canvas手写在线签名——小程序端实现在线签名,手写电子签名canvas
在线签名.canvas手写在线签名--小程序端实现在线签名,手写电子签名canvas 近期公司准备接一个政府的小项目,里头有一个在线签名的需求,老板让我研究一下.于是就...开始思考: 在线手写签名, ...
- uniapp - 实现微信小程序电子签名板,横屏手写姓名签名专用写字画板(详细运行示例,一键复制开箱即用)
效果图 实现了在uniapp项目中,微信小程序平台流畅的写字签名板(也可以绘图)功能源码,复制粘贴,改改样式几分钟即可搞定! 支持自动横屏.持预览,真机运行测试非常流畅不卡顿. 基础模板 如下代码所示 ...
- jquery手写轮播图_用jquery实现图片轮播怎么写呢求指教
展开全部 *{ margin: 0; padding: 0; } ul{ list-style:none; } .slideShow{ width: 620px; height: 700px; ...
- poi插入图片浮于文字上方_Word插入手写签名
Word插入手写签名 通常情况下,我们都需要将文本打印出来,签字,扫描,上传,提交.但在国内外很多公司并不这么做.那大家都是怎么处理的呢? 正文 此处我们需要重点说明,如果是基金.合同.工资等相对比较 ...
- MATLAB 实现电子版的手写签名
Ques:有时候我们需要在电子文档上实现手写的签名,但是又没有相关的文档,我们应该如何解决这个问题呢? 先看看实验结果 程序: %% 选取图像[filename, pathname] = uigetf ...
- word中插入手写的电子签名
1.将手写的签名拍照上传到电脑 2.打开word,插入签名图片 3.双击图片,[环绕文字]-[浮于文字上方] 4.[校正]-[亮度/对比度]中选择一个合适的样式 5.[颜色]-[重新着色]-选个[黑白 ...
- python模拟手写笔迹_原笔迹手写实现平滑和笔锋效果之:笔迹的平滑(一)
之前研究过一种用于 模拟真实 手写笔迹签名 的算法, 要求能够保持原笔迹平滑,并有笔锋的效果. 在网上看了一些资料, 资料很多, 能够达到用于正式产品中的效果的一个都没有找到. 但是即使按照这篇文章 ...
- python实现手写笔迹,手写识别,语音识别,语音生成
文章目录 1,先说思路 2,实现截图 3,祭出源代码 1,先说思路 1,应该实现对于手写笔迹的记录,生成字迹截图 1.1怎么实现呢?在定点和移动中的鼠标所在处画一条线,鼠标按住移动的话,线也会跟着移动 ...
- 开源O2OA办公平台:手写签批介绍
概述 手写签批是建立在O2OA开发平台的公文编辑器组件基础上,允许用户在公文内容上进行手写.签名.批注.文字输入.擦除的一系列功能.手写签批功能可以直观的展现每位处理人对公文内容的批注,有效的提高办公 ...
最新文章
- 社交电商风潮起,中小卖家何处去
- 在国外读phd 的时候和supervisor沟通的时候需要注意的点
- Django学习笔记2
- bootstrap-multiselect 手动触发onChange事件
- (33)SystemVerilog语言编写二分频
- 【mac】mac 安装nginx
- 新年春节项目海报设计,PSD分层模板,帮你顺利交稿!
- Abp vnext Web应用程序开发教程 10 —— 书与作者的关系
- 打工的人面对老板是没有溢价权的
- h5页面 请在微信客户端打开链接_如何看到“请在微信客户端打开链接”页面的源码?...
- C++ 面试实战经验分享
- Tomcat、Servlet、JSP、EL和JDK版本对照以及各版本Tomcat下载
- c++课程设计自助点餐系统
- 猿辅导python编程课网课怎么样_猿辅导网课怎么样,一个过来人经历告诉你
- Unity3d 制定游戏循环的策略
- 快速批量创建文件夹、文件的快捷键
- 安卓手机内置NFC模块的使用和开发
- 如何测试数字硅麦软件,硅麦克风技术规格及测试方法
- 【第十篇】商城系统-性能测试
- 什么是自动出价?它的优势是什么?
热门文章
- win7打开桌面计算机很慢,鼠标右键刷新桌面很慢怎么办?Win7右键刷新反应特别慢的解决方法...
- 等红灯时使用车轱辘扫描车牌
- Scrum立会报告+燃尽图(十月二十八日总第十九次)
- 苹果笔记本电脑亮度无法调节_macbook怎么调节屏幕亮度|苹果笔记本调显示器亮度方法...
- QuickFlow-如何通过QFD and ExecuteCode获取其他列表数据
- 怎么获取股票历史数据?获取股票历史数据Excel
- oracle 挖掘日志,使用Oracle的Logminer工具进行日志挖掘
- 如何刷新bios?在windows系统上刷新bios的方法
- TSL2591STM32固件库开发
- 抓包分析TCP首部,三次牵手四次分手过程,序列号确认号计算,为什么握手是三次挥手是四次?