当前位置: 首页 > news >正文

佛山做网站公司排名国外最大的素材网站

佛山做网站公司排名,国外最大的素材网站,谷歌下载安装,买表去哪个app是正品目录 需求 实现效果 开发运行环境 设计实现 界面布局 初始化 画笔绘图 清空画布 导出位图数据 小结 需求 我的文章 《C# 结合JavaScript实现手写板签名并上传到服务器》主要介绍了 web 版的需求实现#xff0c;本文应项目需求介绍如何通过 C# WinForm 通过画布画笔…目录 需求 实现效果 开发运行环境 设计实现 界面布局 初始化 画笔绘图 清空画布 导出位图数据 小结 需求 我的文章 《C# 结合JavaScript实现手写板签名并上传到服务器》主要介绍了 web 版的需求实现本文应项目需求介绍如何通过 C# WinForm 通过画布画笔实现手写签名并在开发过程中解决遇到的一些格式转换的问题提供一些思路。 实现效果 签名功能的显示界面如下图 该效果主要实现如下功能 1、提供画布设计画笔类实现画笔签名 2、点击重签按钮清空画布 3、点击确认按钮保存画布位图到指定的格式提供三种保存类型文件二进制数据和BASE64编码 开发运行环境 操作系统 Windows Server 2019 DataCenter 手写触屏设备Microsoft Surface Pro 9 .net版本 .netFramework4.0 或以上 开发工具VS2019  C# 设计实现 界面布局 主要在WinForm上放置如下控件Name 为 canvasPanel 的 System.Windows.Forms.Panel控件一些Label控件、radioButton控件和两个功能按钮Button控件如下图 初始化 Form1 初始化如下变量  bool isMouseDown false;      // 判断鼠标或手指是否按下按下为 true       Graphics canvas null;    // 定义绘图画布       Image bmpData null;     // 定义 Image 图像将来导出时使用 实例化变量的过程中 new Bitmap 则产生的默认格式为 System.Drawing.Imaging.ImageFormat.MemoryBmp 格式这会产生一个问题保存的位图是全黑色。因此一个解决的思路是先临时创建一个白色背景的JPEG图片图片的大小取决于panel控件的宽度和高度然后再将画布的图像 bmpData 变量实例化创建引用这个临时图片的路径。 示例代码如下 public partial class Form1 : Form{bool isMouseDown false;Graphics canvas null;Image bmpData null;public Form1(){InitializeComponent();canvas canvasPanel.CreateGraphics();string tmpJpg Application.StartupPath \\tmpimg\\ System.Guid.NewGuid().ToString() .jpg;using (Bitmap bitmap new Bitmap(canvasPanel.Width, canvasPanel.Height)){using (Graphics graphics Graphics.FromImage(bitmap)){graphics.Clear(Color.White);}bitmap.Save(tmpJpg, ImageFormat.Jpeg);}bmpData new Bitmap(tmpJpg);}} 画笔绘图 Graphics canvas 为canvasPanel控件创建的画布首先定义实现一个画笔类代码如下 public static class signPen{public static Point LastPoint { get; set; }public static Color Color { get; set; }public static int Width { get; set; }static signPen(){Color Color.Black;Width 2;}} 画笔类主要包括 序号属性名类型说明1LastPointPoint记录最后一次画笔的坐标点并结合 DrawLine 方法画出想要的线段2ColorColor画笔的颜色默认为黑色3Widthint画笔的粗线默认为21为最细 实现绘图主要是通过画笔类在canvasPanel 的鼠标按下、鼠标移动、和鼠标抬起事件定义相关操作。 序号事件名说明1canvasPanel_MouseDown记住鼠标是否按下将 bool isMouseDown 置为true另一个关键功能是将按下的点Point,赋值到画笔的 LastPoint 属性以备后续绘制线条使用2CanvasPanel_MouseMove判断 isMouseDown 标志如果为 true 则引入画布图像从最后一次的Point结合当前鼠标的Point 进行 DrawLine 操作并形成新的位图数据3CanvasPanel_MouseUp将 bool isMouseDown 置为 false不再进行绘制 示例代码如下 private void canvasPanel_MouseDown(object sender, MouseEventArgs e){if (e.Button MouseButtons.Left){isMouseDown true;signPen.LastPoint new Point(e.X, e.Y);}}private void CanvasPanel_MouseMove(object sender, MouseEventArgs e){if (isMouseDown true){Graphics gf Graphics.FromImage(bmpData);//设置高质量插值法gf.InterpolationMode System.Drawing.Drawing2D.InterpolationMode.High;//设置高质量,低速度呈现平滑程度 gf.SmoothingMode System.Drawing.Drawing2D.SmoothingMode.AntiAlias;Pen pen new Pen(signPen.Color, signPen.Width);Point curPoint new Point(e.X, e.Y);gf.DrawLine(pen, signPen.LastPoint, curPoint);signPen.LastPoint curPoint;canvas.DrawImage(bmpData, 0,0);}}private void CanvasPanel_MouseUp(object sender, MouseEventArgs e){isMouseDown false;}清空画布 可通过点击“重签” 按钮清空画布实现如初始化功能代码如下 string tmpJpg Application.StartupPath \\tmpimg\\ System.Guid.NewGuid().ToString() .jpg;using (Bitmap bitmap new Bitmap(canvasPanel.Width, canvasPanel.Height)){using (Graphics graphics Graphics.FromImage(bitmap)){graphics.Clear(Color.White);}bitmap.Save(tmpJpg, ImageFormat.Jpeg);}bmpData new Bitmap(tmpJpg);canvas.DrawImage(bmpData, 0,0); 导出位图数据 绘制完成我们就需要将 bmpData  位图变量数据导出我们想要的格式为了便于演示我们设置了一组 radioButton 选项可以导出三种类型的形式数据如下表 序号事件名说明1radioButton1直接导出成文件jpeg类型2radioButton2导出二进制数据 byte[]3radioButton3导出 base64 数据 string类型 假设“确定”按钮 Name 为 “Button13”并假设输出到D盘根目录下示例代码如下 private void Button13_Click(object sender, EventArgs e){string jpgFilename d:\\ System.Guid.NewGuid().ToString() .jpg;bmpData.Save(jpgFilename,ImageFormat.Jpeg);if (File.Exists(jpgFilename) false){MessageBox.Show(string.Format(保存文件至{0}失败。, jpgFilename));return;}if (radioButton1.Checked true){MessageBox.Show(string.Format(已成功保存至{0}。, jpgFilename));}if (radioButton2.Checked true){byte[] bytes2fe.GetBinaryData(jpgFilename);MessageBox.Show(string.Format(已成功保存为二进制数据长度{0}。, bytes2.Length));}if (radioButton3.Checked true){string base64str ImgToBase64String(jpgFilename, false);MessageBox.Show(string.Format(已成功保存为BASE64长度{0}。, base64str.Length));}}public byte[] GetBinaryData(string filename){if(!File.Exists(filename)){return null;}try{FileStream fs new FileStream(filename, FileMode.Open, FileAccess.Read);byte[] imageData new Byte[fs.Length];fs.Read( imageData, 0,Convert.ToInt32(fs.Length));fs.Close();return imageData;}catch(Exception){return null;}finally{}} public string ImgToBase64String(string Imagefilename, bool outFullString false){try{System.Drawing.Bitmap bmp new System.Drawing.Bitmap(Imagefilename);MemoryStream ms new MemoryStream();// bmp.Save(ms,ImageFormat.Jpeg)System.Drawing.Imaging.ImageFormat iformat System.Drawing.Imaging.ImageFormat.Jpeg;string extension System.IO.Path.GetExtension(Imagefilename).Replace(., ).ToLower();if (extension bmp){iformat System.Drawing.Imaging.ImageFormat.Bmp;}else if (extension emf){iformat System.Drawing.Imaging.ImageFormat.Emf;}else if (extension exif){iformat System.Drawing.Imaging.ImageFormat.Exif;}else if (extension gif){iformat System.Drawing.Imaging.ImageFormat.Gif;}else if (extension icon){iformat System.Drawing.Imaging.ImageFormat.Icon;}else if (extension png){iformat System.Drawing.Imaging.ImageFormat.Png;}else if (extension tiff){iformat System.Drawing.Imaging.ImageFormat.Tiff;}else if (extension wmf){iformat System.Drawing.Imaging.ImageFormat.Wmf;}bmp.Save(ms, iformat);byte[] arr new byte[ms.Length];ms.Position 0;ms.Read(arr, 0, (int)ms.Length);ms.Close();bmp.Dispose();string rv Convert.ToBase64String(arr);if (outFullString true){rv data:image/ extension ;base64, rv;}return rv;}catch (Exception ex){return null;}}小结 对于 new Bitmap 创建的位图我们还可以使用 Png 格式以防止“黑图”的出现我们在应用中可以灵活掌握如下代码 Bitmap newimg new Bitmap(100,100);newimg.Save(d:\\test.jpg, System.Drawing.Imaging.ImageFormat.Png); 保存的数据显示在画布上可采取如下方法 1、文件型 System.Drawing.Image img2 new Bitmap(你的文件地址);canvas.DrawImage(img2, 0, 0);MessageBox.Show(显示文件到画布成功);2、二进制型 byte[] bytes 你的二进制数据;MemoryStream ms new MemoryStream(bytes);System.Drawing.Image img System.Drawing.Image.FromStream(ms);canvas.DrawImage(img, 0, 0);MessageBox.Show(显示二进制到画布成功); 3、base64型 string base64 你的base64数据;byte[] arr Convert.FromBase64String(base64);MemoryStream ms2 new MemoryStream(arr);System.Drawing.Image img2 System.Drawing.Image.FromStream(ms2);canvas.DrawImage(img2, 0, 0);MessageBox.Show(显示base64到画布成功);以上就是C# WinForm 通过画布画笔实现绘图的一些介绍感谢您的阅读希望本文能够对您有所帮助。
http://www.hkea.cn/news/14319770/

相关文章:

  • 建站快车品牌代码写好了怎么做成网页
  • 学院网站建设服务招生宣传微信公众号开发网站开发
  • 企业信息公开网站wordpress 体育主题公园
  • 重庆网站设计公司排名wordpress分类目录keyword
  • 网站规划与建设课程设计网站前端设计外包公司
  • 网站开发预算编制图像编辑器
  • 如何规划一个网站中国建设人才网信息网证书如何查询
  • 大连仟亿科技网站建设公司怎么样网页设计与制作图片素材
  • 萍乡网站seo怎样营销建设网站
  • 无锡网站制作哪家公司好wordpress admin ajax
  • 如何做网站焦点图设计公司怎么接业务
  • 网站建设入门做网站多少钱西宁君博领衔
  • 婴儿做相册的网站开发公司对外房屋销售优惠政策
  • 土特产网站建设事业计划书wordpress 文章 列表
  • vultr做网站保定百度推广排名
  • 义乌建站软件研发和开发的区别
  • 好点的开发网站的公司比分网站仿站建设
  • 设计门户网站网站建设找朝云科技
  • 陕西网站制作淮北之窗
  • php网站建设招聘品牌宣传推广方案
  • 网站推广总结网站谁做的比较好
  • 网站联系我们页面阿里云搜索引擎
  • 网站注销重新备案wordpress图片上传插件
  • 网站开发 图片存放广州有几个区图片
  • 公益广告 公司网站建设中...科技与狠活是什么梗
  • 哪些网站可以做gifphp 网站 服务器
  • 平谷手机网站建设哪个网站推广比较好
  • 网站建设公司运营网络项目设计方案
  • 做360网站优化快速闪图在线制作网站
  • 网站表单提交到qq邮箱手机软件商店免费下载