基于C# Winform的二维码(QR Code)生成程序

二维码简介

二维码即2-Dimensional Bar Code,二维条码的种类很多,常见的二维码格式有:PDF417码、QR码、汉信码、颜色条码、quick mark code、data matrix。与传统的条形码相比,可以存储更多的信息,二维码本质上是个密码算法,本文描述的是最常见的QR码(QR Code)的生成方式,QR码的结构如下图所示。
二维码(QR码)基本结构

目标

开发一个C# Winform应用程序:

1)可以在界面中输入任意文本内容,点击生成按钮可以将文本内容转换为二维码展示在用户界面中;

2)点击保存按钮可以将二维码以图片的形式保存在指定的路径下。

基于 C# Winform 的 QR 码生成程序

  1. 创建Winform .net framework项目,通过Nuget包管理器安装QRCoder库,如下图所示。
    通过Nuget下载安装QRCoder库
    Winform_QRCode库下载
  2. 搭建 Winform 用户界面,如下图所示,其中一个richText文本框用于输入文本信息,该文本信息用于生成二维码,一个picturebox控件用于展示生成的二维码,两个Button控件用于触发二维码的生成和保存。
    Winform用户界面
  3. 编写程序代码,代码源码如下:
using QRCoder;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace QRCode_Winform
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            // 设置picQRCode对象图片自适应
            picQRCode.BackgroundImageLayout = ImageLayout.Stretch;
            picQRCode.SizeMode=PictureBoxSizeMode.StretchImage; 
        }
        

        private void btnCreate_Click(object sender, EventArgs e)
        {
            // 创建QRCodeGenerator对象
            QRCodeGenerator qrGenerator = new QRCodeGenerator();
            // 创建QCodeRData对象
            QRCodeData qrData = qrGenerator.CreateQrCode(txtText.Text, QRCodeGenerator.ECCLevel.M);
            // 创建QRCode对象
            QRCode qrCode = new QRCode(qrData);      
            // 将QRCode对象转换为BitMap对象
            Bitmap qrCodeImage= qrCode.GetGraphic(20);
            // 将Bitmap对象转换为Image对象
            // Image img= Image.FromHbitmap(qrCodeImage.GetHbitmap());
            // 设置picQRCode对象的数据源
            //picQRCode.Image = img;
            picQRCode.Image = qrCodeImage;
            picQRCode.Show();
            picQRCode.Refresh();
        }

        private void btnSave_Click(object sender, EventArgs e)
        {

            SaveFileDialog imgFilePath = new SaveFileDialog();
            imgFilePath.Title = "二维码图片保存";
            imgFilePath.FileName = "QRCode";
            imgFilePath.Filter = "图片文件|*.jpg;*.png;*.jpeg;*.bmp";
            if (imgFilePath.ShowDialog() == DialogResult.OK)
            {
                string fileName = imgFilePath.FileName.ToString();
                // 获取图片后缀
                string fileExtName = fileName.Substring(fileName.LastIndexOf(".") + 1).ToString();
                System.Drawing.Imaging.ImageFormat imgformat;
                if (fileExtName != "")
                {
                    switch (fileExtName)
                    {
                        case "jpg":
                            imgformat = System.Drawing.Imaging.ImageFormat.Jpeg;
                            break;
                        case "bmp":
                            imgformat = System.Drawing.Imaging.ImageFormat.Bmp;
                            break;
                        case "png":
                            imgformat = System.Drawing.Imaging.ImageFormat.Png;
                            break;
                        default:
                            imgformat = System.Drawing.Imaging.ImageFormat.Jpeg;
                            break;
                    }
                    // 保存图片
                    picQRCode.Image.Save(fileName, imgformat);
                }
            }
        }
    }
}

  1. 程序运行效果如下图所示。
    程序运行效果
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LabVIEW-C#工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值