C#学习笔记之条形码和二维码
来源:互联网 发布:大英百科全书数据库 编辑:程序博客网 时间:2024/06/07 20:23
条形码参考资料:http://www.51hei.com/mcu/4350.html
http://www.cnblogs.com/rophie/archive/2012/03/02/2376946.html
二维码参考资料:http://wenku.baidu.com/link?url=1BqJ9BTkrqN9K3uRVL34HlyftPTbTSpVzQBC_fUZynMq1sNOiR4byzTezNf-UtHny9HVRsLIanF0C0gRsELH89FNjAuBqTaHc-RgCM6u_rK
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;using ThoughtWorks.QRCode.Codec.Data;namespace _01_条形码{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } private Bitmap bmpLog; // 用于存放二维码Log图片 /// <summary> /// 生成条形码 /// </summary> private void button1_Click(object sender, EventArgs e) { Code128 code = new Code128(); code.ValueFont = new Font("黑体", 20); Bitmap bmp1 = code.GetCodeImage(textBox1.Text, Code128.Encode.Code128A); Bitmap bmp2 = code.GetCodeImage(textBox1.Text, Code128.Encode.Code128C); code.ValueFont = new Font("黑体", 12); Bitmap bmp3 = code.GetCodeImage(textBox1.Text, Code128.Encode.Code128A); code.ValueFont = new Font("黑体", 10); Bitmap bmp4 = code.GetCodeImage(textBox1.Text, Code128.Encode.Code128C); pictureBox2.Image = bmp1; pictureBox3.Image = bmp2; pictureBox4.Image = bmp3; pictureBox5.Image = bmp4; } /// <summary> /// 生成二维码 /// </summary> private void button2_Click(object sender, EventArgs e) { if (textBox1.Text == "") { MessageBox.Show("输入信息为空,请重新输入:"); return; } // 获取二维码位图 Bitmap bitmap = GetCode(textBox1.Text); if (bmpLog == null) // 没有Log图标 { pictureBox1.Image = bitmap; } else // 已上传Log图标 { int x = bitmap.Width; // 二维码的宽 int y = bitmap.Height; // 二维码的高 Point point = new Point(x / 2 - 20, y / 2 - 20); // 计算Log图标的坐标位置 Graphics g = Graphics.FromImage(bitmap); // 将二维码设为一个画布 g.DrawImage(bmpLog, point); // 将Log图标绘制到二维码上 pictureBox1.Image = bitmap; // 显示带Log图标的二维码 } } /// <summary> /// 获取二维码位图 /// </summary> /// <param name="strMsg">二维码中存放的信息</param> /// <returns>二维码位图</returns> public Bitmap GetCode(string strMsg) { /// <summary> /// 生成二维码需要引用外部类库:ThoughtWorks.QRCode.dll,可以在网上下载 /// </summary> QRCodeEncoder qrEncoder = new QRCodeEncoder(); // 设置二维码背景颜色 qrEncoder.QRCodeBackgroundColor = System.Drawing.Color.White; // 设置二维码编码格式(编码类型) qrEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE; // 设置二维码每个小方格的宽度(规格) qrEncoder.QRCodeScale = 5; // 设置二维码的版本号。象征着二维码的信息容量。二维码可以看成一个黑白方格矩阵,版本不同,矩阵长宽方向 // 方格的总数量分别不同。版本1为(21*21)矩阵,版本每增1,二维码的两个边长都增4,所以版本7为(45*45) // 矩阵,最高版本为40,是(177*177)矩阵。 // 字符串太长的情况下,生成二维码可能会出现错误:“索引超出了数组界限”; // 解决办法:qrEncoder.QRCodeVersion = 0; qrEncoder.QRCodeVersion = 6; // 纠错等级。纠错信息同样存储的二维码中,纠错级别越高,纠错信息占用的空间越多, // 相对的能存储的有用信息就越少。 qrEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.H; // 生成二维码位图 Bitmap bitmap = qrEncoder.Encode(strMsg, Encoding.Default); return bitmap; } /// <summary> /// 保存二维码 /// </summary> private void button4_Click(object sender, EventArgs e) { // 保存文件对话框 SaveFileDialog saveFile = new SaveFileDialog(); saveFile.Title = "请选择保存路径:"; saveFile.Filter = "图片文件(*.jpg;*.bmp;*.gif)|*.jpg;*.bmp;*.gif"; if (saveFile.ShowDialog() == DialogResult.OK) { string fileName = saveFile.FileName; // 获取保存文件的全路径名字 textBox2.Text = fileName; // 显示保存路径名 Image image = pictureBox1.Image; // 获取二维码位图 image.Save(fileName); // 保存二维码位图 } } /// <summary> /// 上传Log图标 /// </summary> private void button5_Click(object sender, EventArgs e) { // 打开文件对话框 OpenFileDialog openFile = new OpenFileDialog(); openFile.Title = "请选择文件:"; openFile.Filter = "图片文件(*.jpg;*.bmp;*.gif)|*.jpg;*.bmp;*.gif"; if (openFile.ShowDialog() == DialogResult.OK) { string fileName = openFile.FileName; // 获取选中文件的全路径名字 Bitmap bitmap = new Bitmap(fileName); // 生成位图 Bitmap newBmp = new Bitmap(bitmap, 40, 40); // 压缩位图 //pictureBox1.Image = newBmp; bmpLog = newBmp; MessageBox.Show("Log图标上传成功!"); } } /// <summary> /// 解析二维码 /// </summary> private void button6_Click(object sender, EventArgs e) { // 获取二维码图像 Image image = pictureBox1.Image; QRCodeDecoder qrDecoder = new QRCodeDecoder(); QRCodeImage qrImage = new QRCodeBitmapImage(new Bitmap(image)); string result = qrDecoder.decode(qrImage); // 解析出二维码中保存的信息 textBox2.Text = result; MessageBox.Show(result); } }}
二维码生成结果:
条形码生成结果:
0 0
- C#学习笔记之条形码和二维码
- Python之ReportLab绘制条形码和二维码
- 生成二维码和条形码
- 二维码和条形码
- 用C#实现的条形码和二维码编码解码器
- 用C#实现的条形码和二维码编码解码器
- 用C#实现的条形码和二维码编码解码器
- C#利用zxing.net操作二维码和条形码
- 用C#实现的条形码和二维码编码解码器
- 【转】用C#实现的条形码和二维码编码解码器
- C#利用zxing.net操作二维码和条形码
- C#利用zxing.net操作二维码和条形码
- Android学习之 google Zxing 二维码条形码生成与解析
- Android - 条形码和二维码使用
- 二维码和条形码简单实现
- iOS 生成二维码和条形码
- 条形码和二维码控件推荐
- 条形码和二维码编码解码
- sql教程
- js中(function(){})()的用法
- 添物不花钱学计算机及编程(预备篇)— 总述
- wampserver中Apache配置虚拟主机方法
- js中用参数传递方法名
- C#学习笔记之条形码和二维码
- you only look once
- Mysql
- jsp连接mysql数据库报时区错误
- jsp
- Android之从SD卡加载大图片
- 进不去的北京城之北京动物园
- UVA 10825 Yummy Triangular Pizza (暴力)
- ES6-Math对象扩展