首先要因为一个动态库文件ThoughtWorks.QRCode.Codec; 可以去网上下载一个ThoughtWorks.QRCode.dll。之后添加现有项目引用就可以
using ThoughtWorks.QRCode.Codec;
using ThoughtWorks.QRCode.Codec.Data;//可以省略
using ThoughtWorks.QRCode.Codec.Util;//可以省略
using System.Text.RegularExpressions;//可以省略
namespace 二维码 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } //生成二维码 private void button1_Click(object sender, EventArgs e) { //实例化二维码类 QRCodeEncoder qr = new QRCodeEncoder(); qr.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE; //设置编码格式为byte /*设置规模和版本 这里的设置规模:4,版本:7,其余值可以自行试验,这两个值基本只是改变了二维码的大小。 */ qr.QRCodeScale = 4; qr.QRCodeVersion = 7; //这只错误效验的级别一共有4个级别 qr.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M; //定义一个网址 string link = "https://www.jd.com/"; //定义一个图像=空 Image image=null; //图像接收=二维码.编码(link) image = qr.Encode(link); //pictrue控件的图像=编码后接收的图像 pictureBox1.Image = image; }
//保存二维码 private void button2_Click(object sender, EventArgs e) { SaveFileDialog save = new SaveFileDialog(); //实例化保存窗体类 //保存窗体另存为的后缀名 save.Filter = "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif|PNG Image|*.png"; //保存窗体的标题 save.Title = "保存二维码"; //判断pictrue控件里是否有Image,没有就return if (pictureBox1.Image==null) { MessageBox.Show("没有要保存的图片"); return; } //二维码默认文件的名字为空; save.FileName = string.Empty; //判断保存打开的窗体等不等于ok按钮 if (save.ShowDialog()==DialogResult.OK) { //pictrue控件里的Image图像保存路径下,名字为二维码名字 pictureBox1.Image.Save(save.FileName); MessageBox.Show("保存成功"); } else { return; } } } }
//解码
private void btnDecode_Click(object sender, EventArgs e) { try {
//定义字符串接收=解码.解码方法(新的 二维码bitmapImage(new Bitmap(图片空间中的图像)),解码为默认) string decodedString = new QRCodeDecoder().decode(new QRCodeBitmapImage(new Bitmap(pb_view.Image)), Encoding.Default); //String decodedString = decodedString(new QRCodeBitmapImage(new Bitmap(pb_view.Image)), Encoding.UTF8); txtEncodeData.Text = decodedString; } catch (Exception pv) { MessageBox.Show(pv.Message,"识别失败"); return; }
//打开图像 private void button4_Click(object sender, EventArgs e) { OpenFileDialog opencode = new OpenFileDialog(); opencode.Filter="JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif|PNG Image|*.png"; if (opencode.ShowDialog()==DialogResult.OK) { pictureBox1.Image = Image.FromFile(opencode.FileName.ToString()); } }
//打印功能 private void button7_Click(object sender, EventArgs e) { PrintDialog printDialog = new PrintDialog(); //选择打印机 printDialog.Document = printDocument1; //打印机内容=PrintDocument控件内容 if (printDialog.ShowDialog(this) == DialogResult.OK) //到这里会出现选择打印项的窗口 { printDocument1.Print(); //到这里会出现给文件命名的窗口,点击确定后进行打印并完成打印 } } //打印内容控件事件-----打印页 private void printDocument1_PrintPage(object sender, PrintPageEventArgs e) { try { if (pictureBox1.Image!=null)//如果pictrueBox的图像不为空 {
//打印页.绘制页.画图像(pictrueBox图像,可见剪辑区域的边框) e.Graphics.DrawImage(pictureBox1.Image,e.Graphics.VisibleClipBounds);
//是否打印附加页 e.HasMorePages = false; } } catch (Exception exception) { // Log... } }