当前位置: 首页 > 科技观察

如何用.NET生成二维码?

时间:2023-03-20 01:12:52 科技观察

二维码用于记录数据符号信息,其具有特定的几何图形,按照一定的规则分布在一个平面(二维方向)上。国外对QR码技术的研究始于20世纪80年代末,在二维码符号表示技术的研究中发展出多种码制,常见的有PDF417、QRCode、Code49、Code16K、CodeOne等二维码技术已广泛应用于公安、外交、军事等部门对各种证件的管理,也被用于海关对各种报表、票据的管理,税务等部门,商务,交通等部门管理货物运输,邮政部门管理邮包,工业生产领域自动化管理工业生产线。下面介绍如何使用.NET生成二维码(QRCode码制),详细步骤如下:1.新建一个window应用,然后导入.NET二维码类库(开源类库,可从网上下载):2.构建UI界面,代码如下:namespaceWinQRCode{partialclassForm1{///

///requireddesignervariables。///privateSystem.ComponentModel.IContainercomponents=null;//////清理所有正在使用的资源。//////如果托管资源应该被释放则为真;否则,假的。protectedoverridevoidDispose(boolddisposing){if(disposing&&(components!=null)){components.Dispose();}base.Dispose(disposing);}#regionWindows表单设计器生成的代码//////设计器支持所需的方法-不要///使用代码编辑器修改此方法的内容。///privatevoidInitializeComponent(){this.button1=newSystem.Windows.Forms.Button();this.button2=newSystem.Windows.Forms.Button();this.pictureBox1=newSystem.Windows.Forms.PictureBox();this.label1=newSystem.Windows.Forms.Label();this.textBox1=newSystem.Windows.Forms.TextBox();this.label2=newSystem.Windows.Forms.Label();this.lbl解码信息=newSystem.Windows.Forms.Label();((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();this.SuspendLayout();////button1//this.button1.Location=newSystem.Drawing.Point(446,31);this.button1.Margin=newSystem.Windows.Forms.Padding(4,5,4,5);this.button1.Name="button1";this.button1.Size=newSystem.Drawing.Size(103,37);this.button1.TabIndex=0;this.button1.Text="编码";this.button1.UseVisualStyleBackColor=true;this.button1.Click+=newSystem.EventHandler(this.button1_Click);////button2//this.button2.Location=newSystem.Drawing.Point(446,81);this.button2.Margin=newSystem.Windows.Forms.Padding(4,5,4,5);this.button2.Name="button2";this.button2.Size=newSystem.Drawing.Size(103,37);this.button2.TabIndex=1;this.button2.Text="破解";this.button2.UseVisualStyleBackColor=true;this.button2.Click+=newSystem.EventHandler(this.button2_Click);////pictureBox1//this.pictureBox1.Location=newSystem.Drawing.Point(23,117);this.pictureBox1.Margin=newSystem.Windows.Forms.Padding(4,5,4,5);this.pictureBox1.Name="pictureBox1";this.pictureBox1.Size=newSystem.Drawing.Size(279,253);this.pictureBox1.SizeMode=System.Windows.Forms.PictureBoxSizeMode.StretchImage;this.pictureBox1.TabIndex=2;this.pictureBox1.TabStop=false;////label1//this.label1.AutoSize=true;这。label1.Location=newSystem.Drawing.Point(18,39);this.label1.Margin=newSystem.Windows.Forms.Padding(4,0,4,0);this.label1.Name="label1";this.label1.Size=newSystem.Drawing.Size(69,25);this.label1.TabIndex=3;this.label1.Text="信息:";////textBox1//this.textBox1.Location=newSystem.Drawing.Point(95,37);this.textBox1.Margin=newSystem.Windows.Forms.Padding(4,5,4,5);this.textBox1.Name="textBox1";这。textBox1.Size=newSystem.Drawing.Size(333,31);this.textBox1.TabIndex=4;////label2//this.label2.AutoSize=true;this.label2.Location=newSystem.Drawing.Point(18,81);this.label2.Margin=newSystem.Windows.Forms.Padding(4,0,4,0);this.label2.Name="label2";this.label2.Size=newSystem.Drawing.Size(88,25);this.label2.TabIndex=5;this.label2.Text="二维码:";////lbl解码信息//this.lbl解码信息.AutoSize=true;this.lbl解码信息.Location=newSystem.Drawing.Point(101,81);this.lbl解码信息.Margin=newSystem.Windows.Forms.Padding(4,0,4,0);this.lbl解码信息.Name="lbl解码信息";this.lbl解码信息.Size=newSystem.Drawing.Size(0,25);this.lbl解码information.TabIndex=6;////Form1//this.AutoScaleDimensions=newSystem.Drawing.SizeF(11F,24F);this.AutoScaleMode=System.Windows.Forms.AutoScaleMode.Font;this.ClientSize=newSystem.Drawing。尺寸(572,384);this.Controls.Add(this.lbl解码信息);this.Controls.Add(this.label2);this.Controls.Add(this.textBox1);this.Controls.Add(this.label1);this.Controls.Add(this.pictureBox1);this.Controls.Add(this.button2);this.Controls.Add(this.button1);this.Font=newSystem.Drawing.Font("微软雅黑",10.8F,System.Drawing.FontStyle.Regular,System.Drawing.GraphicsUnit.Point,((byte)(134)));this.Margin=newSystem.Windows.Forms.Padding(4,5,4,5);this.Name="Form1";this.Text="二维码";((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();this.ResumeLayout(false);this.PerformLayout();}#endregionprivateSystem.Windows.Forms.Buttonbutton1;privateSystem.Windows.Forms.Buttonbutton2;privateSystem.Windows.Forms.PictureBoxpictureBox1;privateSystem.Windows.Forms.Labellabel1;privateSystem.Windows.Forms.TextBoxtextBox1;privateSystem.Windows.Forms.Labellabel2;privateSystem.Windows.Forms.Labellbl解码信息;}}图形如下:3.编写编解码按钮事件,并按表单编解码处理:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;namespaceWinQRCode{usingThoughtWorks.QRCode.Codec;usingThoughtWorks.QRCode.Codec.Data;usingThoughtWorks.QRCode。Codec.Util;usingSystem.IO;usingPdfToImage;publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}//////编码/////////privatevoidbutton1_Click(objectsender,EventArgse){if(this.textBox1.Text!=""){Cursor.Current=Cursors.WaitCursor;if(textBox1.Text.Trim()==String.Empty){MessageBox.Show("不能为空.");return;}QRCodeEncoderqrCodeEncoder=newQRCodeEncoder();qrCodeEncoder.QRCodeEncodeMode=QRCodeEncoder.ENCODE_MODE.BYTE;qrCodeEncoder.QRCodeScale=4;qrCodeEncoder.QRCodeVersion=7;qrCodeEncoder.QRCodeErrorCorrect=QRCodeEncoder.ERROR_CORRECTION.M;System.Drawing.Imageimage;Stringdata=textBox1.Text;//编码image=qrCodeEncoder.Encode(data);//图片显示this.pictureBox1.Image=image;Cursor.Current=Cursors.Default;}}//////解码/////////privatevoidbutton2_Click(objectsender,EventArgse){Cursor.Current=Cursors.WaitCursor;Bitmapb=this.pictureBox1.ImageasBitmap;try{QRCodeDecoderdecoder=newQRCodeDecoder();//解码StringdecodedString=decoder.decode(newQRCodeBitmapImage(b));//显示解码信息this.lbl解码信息.Text+=decodedString;}catch(Exceptionex){MessageBox.Show(ex.Message);}Cursor.Current=Cursors.Default;}privatevoidForm1_Load(objectsender,EventArgse){}}}4.编译运行,如下图:水平有限,希望各位园友不要犹豫开导我!如果觉得不错,请点击推荐,疯狂关注!