Winform窗体实现简单的二维码生成和保存
二维码的生成需要用到二维码生成的类库,ThoughtWorks.QRCode.dll
步骤:
第一步:下载二维码生成类库,ThoughtWorks.QRCode.dll
第二步:新建winform项目,引用类库ThoughtWorks.QRCode.dll,并布置winform窗体的控件
第三步:编写生成和保存二维码的方法
第四步:演示窗体的效果和保存后的二维码
二:介绍例子的步骤
第一步:新建一个QRCodeTest项目,添加引用类库ThoughtWorks.QRCode.dll,
项目结构如果所示:
第二步:布置窗体用到的控件,两个数值控件、一个文件框控件、两个按钮控件,
和一个图片框控件,并给它们命名,如图:
第三步:代码的展示
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using ThoughtWorks.QRCode.Codec;
namespace QRCodeTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
/// <summary>
/// 生成二维码事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnCreateQRCode_Click(object sender, EventArgs e)
{
//获取生成二维码的参数(规模、版本、链接地址)
int size = Convert.ToInt32(this.num_Size.Text);
int version = Convert.ToInt32(this.num_version.Text);
string linkaddress = this.txb_LinkAddress.Text.ToString();
//调用生成二维码图片的事件,并把图片显示在图片框中
Image img = QrCodeBitmap(linkaddress, size, version);
this.pic_MyImg.Image = img;
}
/// <summary>
/// 保存二维码事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnSaveQRCode_Click(object sender, EventArgs e)
{
if (this.pic_MyImg.Image == null)
{
MessageBox.Show("没有可用的二维码图片!");
}
else
{
SaveFileDialog saveqrimg = new SaveFileDialog();
saveqrimg.Title = "二维码图片保存";
saveqrimg.Filter = @"jpeg|*.jpg|bmp|*.bmp|gif|*.gif";
if (saveqrimg.ShowDialog() == DialogResult.OK)
{
this.pic_MyImg.Image.Save(saveqrimg.FileName, System.Drawing.Imaging.ImageFormat.Jpeg);
}
}
}
/// <summary>
/// 生成二维码位图
/// </summary>
/// <param name="link">用于生成二维码的链接</param>4
/// <param name="size">二维码规模大小</param>
/// <param name="version">二维码版本</param>
/// <returns>二维码图片对象</returns>
private Image QrCodeBitmap(string link, int size, int version)
{
QRCodeEncoder qrcodeencoder = new QRCodeEncoder();//生成设置编码实例
qrcodeencoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;//字节编码
qrcodeencoder.QRCodeScale = size;//二维码规模大小
qrcodeencoder.QRCodeVersion = version;//二维码版本
qrcodeencoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;//设置错误校验(错误更正)的级别:中等M
Image img = qrcodeencoder.Encode(link);//生成二维码image图片
return img;
}
}
}
第四步:效果展示
1)生成二维码
ps: 默认二维码规模、版本和链接地址为4,7,百度地址
2)保存二维码
Winform窗体实现简单的二维码生成和保存的更多相关文章
- Winform中使用zxing实现二维码生成(附dll下载)
场景 zxing.dll下载 https://download.csdn.net/download/badao_liumang_qizhi/11623214 效果 实现 新建Winform程序,将上面 ...
- C# 二维码生成 ( QRCoder )
二维码1.前言seaconch 最近在搞二维码方面的一些东西,所以接触了一些二维码相关,那么既然用过了就要有用过了的样子 其实关于二维码的文章真的多的数不胜数,有很多写的很认真,很好,但这就像是学习一 ...
- [开源]C#二维码生成解析工具,可添加自定义Logo
二维码又称 QR Code,QR 全称 Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的 Bar Code 条形码能存更多的信息,也能表示更多的数据类型:比如:字 ...
- .NET 二维码生成(ThoughtWorks.QRCode)
引用ThoughtWorks.QRCode.dll (源代码里有) 1.简单二维码生成及解码代码: //生成二维码方法一 private void CreateCode_Simple(string n ...
- Android 二维码 生成和识别(附Demo源码)
今天讲一下目前移动领域很常用的技术——二维码.现在大街小巷.各大网站都有二维码的踪迹,不管是IOS. Android.WP都有相关支持的软件.之前我就想了解二维码是如何工作,最近因为工作需要使用相关技 ...
- Android 二维码 生成和识别(转)
原博客地址 :http://www.cnblogs.com/weixing/archive/2013/08/28/3287120.html 还有几个写的也可以参考一下:http://www.itnos ...
- IOS 二维码生成
这篇博客将会介绍二维码的生成. 由于没有什么东西值得长篇大论的,所以这里我就通过代码的实现介绍二维码. 第一部分 第一部分是二维码的简单生成没有其他重点介绍. 效果图 代码部分 // // ViewC ...
- android 二维码生成+扫描
android 二维码生成+扫描 1.在Android应用当中,很多时候都要用到二维码扫描,来避免让用户手动输入的麻烦. Google官方自己推出了一个二维码开源项目:ZXing库. 2.这里简单介绍 ...
- 玩转Android之二维码生成与识别
二维码,我们也称作QRCode,QR表示quick response即快速响应,在很多App中我们都能见到二维码的身影,最常见的莫过于微信了.那么今天我们就来看看怎么样在我们自己的App中集成二维码的 ...
随机推荐
- Window bat expdp 定时任务逻辑备份 定时删除N天前的旧文件
点击进入:Linux shell crontab expdp 定时任务逻辑备份 定时删除旧文件 首先建一个备份数据库用批处理文件,内容如下: rem expdp sz set sz_file=SZ_% ...
- nlog(n)解动态规划--最长上升子序列(Longest increasing subsequence)
最长上升子序列LIS问题属于动态规划的初级问题,用纯动态规划的方法来求解的时间复杂度是O(n^2).但是如果加上二叉搜索的方法,那么时间复杂度可以降到nlog(n). 具体分析参考:http://b ...
- TWaver Flex开发示例及license下载
做电信项目的朋友一定知道TWaver,而Flex版具有很好的跨平台性,很适合做B/S模式的应用. Flex版的在线DEMO:http://twaver.servasoft.com/demo/twave ...
- .NET Framework 高级开发
.NET Framework 高级开发 MSDN 这部分帮助介绍与 .NET Framework 相关的高级编程主题. 本节内容 管理 介绍如何管理 Active Directory 中的对象,如何使 ...
- saiku之行速度优化(三)
经历了前两轮优化之后,saiku由不可使用,优化到可以使用,不过在分析大量日志数据的时候,还有顿卡的感觉!继续观察背后执行的Sql,决定将注意力关注到索引上面! 日志的主要使用场景是:固定日期维度的数 ...
- Binary Tree Postorder Traversal--leetcode难题讲解系列
https://leetcode.com/problems/binary-tree-postorder-traversal/ Given a binary tree, return the posto ...
- 转载 ACM训练计划
leetcode代码 利用堆栈:http://oj.leetcode.com/problems/evaluate-reverse-polish-notation/http://oj.leetcode. ...
- 微信公众号API返回不可打印字符的处理。
引言 在使用微信公众号的"批量获取用户基本信息"API时,发现在某些时候不能使用php的json_decode转为数组,打印出curl获取到的内容中,发现了几个不可打印字符.相信不 ...
- [原]编译Android源码过程中遇到的问题
编译Android源码的过程参考Android官网介绍: 1.下载Android源码的步骤:https://source.android.com/source/downloading.html 2.编 ...
- PhoneCat App 教程
https://docs.angularjs.org/tutorial AngularJS教程第一篇文章的翻译,因为我在看中文版的AngularJS的翻译的时候,发现第一篇文章翻译的不准确,很有可能是 ...