在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例C#语言基础 → C# 二维码生成和解析

C# 二维码生成和解析

C#语言基础

下载此实例
  • 开发语言:C#
  • 实例大小:1.61M
  • 下载次数:53
  • 浏览次数:533
  • 发布时间:2018-05-23
  • 实例类别:C#语言基础
  • 发 布 人:爱之翼
  • 文件格式:.rar
  • 所需积分:2

实例介绍

【实例简介】

实例可以成功运行,直接用于二维码的生成还有解析二维码的功能代码。

无需插件,直接解析二维码读取里边的内容。

编码:
命名空间:namespace ewmbm二维码

类名:public class ewmbm二维码编码

可设置变量
1:ewmbm二维码编码.blx类型//编码类型,数字 、字母或者中文(默认 中文)
2:ewmbm二维码编码.bbb版本//数据容量(默认 版本7)
3:ewmbm二维码编码.bjcdj纠错等级//低、中、高、完美(默认 中)
4:ewmbm二维码编码.bfdbs放大倍数//每个数据点宽几个像素(默认 4)
5:ewmbm二维码编码.bmfs编码方式//(默认 UTF8)

准备工作:
将【二维码\Resources】中的所有dat文件,加入资源文件
或者:
将代码中三处读取资源文件的地方改成读取文件也可以,
搜索【btemp = (sbyte[])二维码.Properties.Resources.ResourceManager.GetObject(fileName);】即可找到三处读取资源文件的地方

使用函数:
using ewmbm二维码;

Bitmap btemp = ewmbm二维码.ewmbm二维码编码.drawqr画二维码(string 要编码的文字);

//***********************************************************************
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
//***********************************************************************
解码:
命名空间间:namespace ewmjm二维码

类名:    public class ewmjm二维码解码

可设置变量
1:ewmjm二维码解码.bmfs编码方式//(默认 UTF8)

使用函数:
using ewmjm二维码;

ewmjm二维码解码 decoder = new ewmjm二维码解码();
string ttemp = decoder.jm解码(Bitmap 要解码的图片);

【实例截图】

from clipboard

【核心代码】

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.Diagnostics;
using ewmbm二维码;
using ewmjm二维码;

namespace 二维码
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            qj.srstr输入str = textBox1.Text;
            qj.rwlb任务列表.Add(0);
            arecsh初始化.Set();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            SaveFileDialog sg = new SaveFileDialog();
            sg.Filter = "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif|PNG Image|*.png|All files (*.*)|*.*";
            sg.FilterIndex = 1;
            sg.RestoreDirectory = true;
            sg.FileName = string.Empty;
            if (sg.ShowDialog() == DialogResult.OK)
            {
                gbmp.Save(sg.FileName);
            }
        }
        private void button2_Click(object sender, EventArgs e)
        {
            textBox2.Text = "";
            //openFileDialog1.Filter = "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif|PNG Image|*.png|All files (*.*)|*.*";

            qj.rwlb任务列表.Add(1);
            arecsh初始化.Set();
        }

        #region 全局变量
        class qj
        {
            public static List<byte> rwlb任务列表 = new List<byte>();
            public static List<byte> rwlbtemp任务列表 = new List<byte>();
            public static string srstr输入str = "";
        }
        #endregion

        private void Form1_Load(object sender, EventArgs e)
        {
            thcsh初始化 = new Thread(txcsh初始化);
            thcsh初始化.IsBackground = true;
            thcsh初始化.Priority = ThreadPriority.Lowest;
            thcsh初始化.Start();
        }
        #region 初始化线程
        Thread thcsh初始化;
        Bitmap gbmp = new Bitmap(10, 10);
        Graphics g;
        OpenFileDialog openFileDialog1 = new OpenFileDialog();
        AutoResetEvent arecsh初始化 = new AutoResetEvent(false);
        void txcsh初始化()
        {
            int rws = 0;
            this.Invoke((EventHandler)(delegate
            {
                comboBox1.SelectedIndex = 2;//类型
                comboBox2.SelectedIndex = 6;//版本
                comboBox3.SelectedIndex = 1;//品质
                comboBox4.SelectedIndex = 3;//大小
                comboBox5.SelectedIndex = 3;//编码方式
            }));
            Stopwatch stw = new Stopwatch();
            stw.Start();
            stw.Stop();
            int itemp = 0;
            ewmjm二维码解码 decoder = new ewmjm二维码解码();
            string tt = "";
            while (true)
            {
                try
                {
                    rws = qj.rwlb任务列表.Count;
                    if (rws > 0)
                    {
                        #region 有任务
                        qj.rwlbtemp任务列表.Clear();
                        lock (qj.rwlb任务列表)
                        {
                            qj.rwlbtemp任务列表.AddRange(qj.rwlb任务列表.ToArray());
                            qj.rwlb任务列表.Clear();
                        }
                        qj.rwlbtemp任务列表 = qj.rwlbtemp任务列表.Distinct().ToList();
                        rws = qj.rwlbtemp任务列表.Count;
                        for (int iii = 0; iii < rws; iii  )
                        {
                            switch (qj.rwlbtemp任务列表[iii])
                            {
                                #region case 0:二维码编码
                                case 0:
                                    itemp = (ewmbm二维码.ewmbm二维码编码.bbb版本 * 4   17)*ewmbm二维码.ewmbm二维码编码.bfdbs放大倍数 2;
                                    this.Invoke((EventHandler)(delegate
                                    {
                                        this.Width = itemp   270;
                                        this.Height = itemp   100;
                                        pictureBox1.Width = itemp;
                                        pictureBox1.Height = itemp;
                                    }));
                                    gbmp = new Bitmap(itemp,itemp);
                                    g = Graphics.FromImage(gbmp);
                                    g.Clear(Color.White);
                                    stw.Reset();
                                    stw.Start();
                                    g.DrawImage(ewmbm二维码编码.drawqr画二维码(qj.srstr输入str), 0, 0);
                                    stw.Stop();
                                    g = pictureBox1.CreateGraphics();
                                    g.DrawImage(gbmp, 0, 0);
                                    this.Invoke((EventHandler)(delegate
                                    {
                                        this.Text = stw.Elapsed.ToString();
                                    }));
                                    break;
                                #endregion
                                #region case 1:二维码解码
                                case 1:
                                    openFileDialog1.Filter = "图像文件jpg bmp gif png tif Image|*.jpg;*.bmp;*.gif;*.png;*.tif|All files (*.*)|*.*";
                                    openFileDialog1.FilterIndex = 1;
                                    openFileDialog1.RestoreDirectory = true;
                                    openFileDialog1.FileName = string.Empty;
                                    DialogResult dr = DialogResult.Cancel;
                                    this.Invoke((EventHandler)(delegate
                                    {
                                        dr = openFileDialog1.ShowDialog();
                                    }));
                                    if (dr == DialogResult.OK)
                                    {
                                        String fileName = openFileDialog1.FileName;
                                        Bitmap bmp = new Bitmap(fileName);
                                        this.Invoke((EventHandler)(delegate
                                        {
                                            this.Width = bmp.Width   270;
                                            this.Height = bmp.Height   100;
                                            pictureBox1.Width = bmp.Width;
                                            pictureBox1.Height = bmp.Height;
                                        }));
                                        gbmp = new Bitmap(bmp.Width, bmp.Height);
                                        g = Graphics.FromImage(gbmp);
                                        g.DrawImage(bmp, 0, 0);
                                        bmp.Dispose();
                                        pictureBox1.Image = gbmp;
                                    }
                                    tt = "";
                                    stw.Reset();
                                    stw.Start();
                                    tt = decoder.jm解码(gbmp);
                                    stw.Stop();
                                    this.Invoke((EventHandler)(delegate
                                    {
                                        textBox2.Text = tt;
                                        this.Text = stw.Elapsed.ToString();
                                    }));
                                    break;
                                #endregion
                                #region case 3:刷新
                                case 3:
                                    g = pictureBox1.CreateGraphics();
                                    g.DrawImage(gbmp, 0, 0);
                                    break;
                                #endregion
                            }
                        }
                        #endregion
                    }
                    rws = qj.rwlb任务列表.Count;
                }
                catch( Exception ex)
                {
                    string t = ex.Message;
                    t  = "";
                }
                if (rws == 0)
                {
                    arecsh初始化.WaitOne(1000);
                }
            }
        }
        #endregion

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            switch (comboBox1.SelectedIndex)
            {
                case 0:
                    ewmbm二维码编码.blx类型 = ewmbm二维码.ewmbm二维码编码.ENCODE_MODE.sz数字;
                    break;
                case 1:
                    ewmbm二维码编码.blx类型 = ewmbm二维码.ewmbm二维码编码.ENCODE_MODE.zmsz字母数字;
                    break;
                case 2:
                    ewmbm二维码编码.blx类型 = ewmbm二维码.ewmbm二维码编码.ENCODE_MODE.zw中文;
                    break;
            }
            qj.rwlb任务列表.Add(0);
            arecsh初始化.Set();
        }

        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
        {
            ewmbm二维码编码.bbb版本 = comboBox2.SelectedIndex   1;
            qj.rwlb任务列表.Add(0);
            arecsh初始化.Set();
        }

        private void comboBox3_SelectedIndexChanged(object sender, EventArgs e)
        {
            switch (comboBox3.SelectedIndex)
            {
                case 0:
                    ewmbm二维码编码.bjcdj纠错等级 = ewmbm二维码.ewmbm二维码编码.ERROR_CORRECTION.L低;
                    break;
                case 1:
                    ewmbm二维码编码.bjcdj纠错等级 = ewmbm二维码.ewmbm二维码编码.ERROR_CORRECTION.M中;
                    break;
                case 2:
                    ewmbm二维码编码.bjcdj纠错等级 = ewmbm二维码.ewmbm二维码编码.ERROR_CORRECTION.H高;
                    break;
                case 3:
                    ewmbm二维码编码.bjcdj纠错等级 = ewmbm二维码.ewmbm二维码编码.ERROR_CORRECTION.Q完美;
                    break;
            }
            qj.rwlb任务列表.Add(0);
            arecsh初始化.Set();
        }

        private void comboBox4_SelectedIndexChanged(object sender, EventArgs e)
        {
            ewmbm二维码编码.bfdbs放大倍数 = comboBox4.SelectedIndex   1;
            qj.rwlb任务列表.Add(0);
            arecsh初始化.Set();
        }

        private void comboBox5_SelectedIndexChanged(object sender, EventArgs e)
        {
            switch (comboBox5.SelectedIndex)
            {
                case 0:
                    ewmbm二维码编码.bmfs编码方式 = ewmbm二维码.ewmbm二维码编码.encode.default系统默认;
                    ewmjm二维码解码.bmfs编码方式 = ewmjm二维码.ewmjm二维码解码.encode.default系统默认;
                    break;
                case 1:
                    ewmbm二维码编码.bmfs编码方式 = ewmbm二维码.ewmbm二维码编码.encode.GB2312;
                    ewmjm二维码解码.bmfs编码方式 = ewmjm二维码.ewmjm二维码解码.encode.GB2312;
                    break;
                case 2:
                    ewmbm二维码编码.bmfs编码方式 = ewmbm二维码.ewmbm二维码编码.encode.Unicode;
                    ewmjm二维码解码.bmfs编码方式 = ewmjm二维码.ewmjm二维码解码.encode.Unicode;
                    break;
                case 3:
                    ewmbm二维码编码.bmfs编码方式 = ewmbm二维码.ewmbm二维码编码.encode.UTF8;
                    ewmjm二维码解码.bmfs编码方式 = ewmjm二维码.ewmjm二维码解码.encode.UTF8;
                    break;
                case 4:
                    ewmbm二维码编码.bmfs编码方式 = ewmbm二维码.ewmbm二维码编码.encode.UTF7;
                    ewmjm二维码解码.bmfs编码方式 = ewmjm二维码.ewmjm二维码解码.encode.UTF7;
                    break;
                case 5:
                    ewmbm二维码编码.bmfs编码方式 = ewmbm二维码.ewmbm二维码编码.encode.ASCII;
                    ewmjm二维码解码.bmfs编码方式 = ewmjm二维码.ewmjm二维码解码.encode.ASCII;
                    break;
                case 6:
                    ewmbm二维码编码.bmfs编码方式 = ewmbm二维码.ewmbm二维码编码.encode.UTF32;
                    ewmjm二维码解码.bmfs编码方式 = ewmjm二维码.ewmjm二维码解码.encode.UTF32;
                    break;
            }
            qj.rwlb任务列表.Add(0);
            arecsh初始化.Set();
        }

        private void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
            qj.rwlb任务列表.Add(3);
            arecsh初始化.Set();
        }
    }
}

实例下载地址

C# 二维码生成和解析

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警