The first thing to do is to download the ThoughtWorks.QRCode.dll file and add references.
ThoughtWorks.QRCode.dll Download, click to download
The interface is as follows:
Code:
usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingThoughtWorks.QRCode.Codec;usingThoughtWorks.QRCode.Codec.Data;usingThoughtWorks.QRCode.Codec.Util;usingSystem.IO;namespaceqrcode{ Public Partial classFmain:form { PublicFmain () {InitializeComponent (); string[] Cbversion =New string[ A]; for(inti =0; I <= +; i++) {Cbversion[i]=i.tostring (); } Cbversion.datasource=cbversion; Cbversion.text="7"; Cbencoding.text="Byte"; Cbcorrectionlevel.text="M"; } Private voidBtnencode_click (Objectsender, EventArgs e) { stringencoding =Cbencoding.text; stringCorrectionlever =Cbcorrectionlevel.text; intVersion =Convert.ToInt32 (Cbversion.text); intScale ; if(!int. TryParse (TxtScale.Text.Trim (), outScale )) {MessageBox.Show ("Scale must be a number"); return; } stringdata =TxtData.Text.Trim (); if(Data = =string. Empty) {MessageBox.Show ("data cannot be empty, please input data Oh! "); return; } qrcodeencoder Qrcodeencoder=NewQrcodeencoder ();//Create an Object Switch(encoding)//Setting the encoding mode { Case "Byte": Qrcodeencoder.qrcodeencodemode=Qrcodeencoder.encode_mode. BYTE; Break; Case "alphanumeric": Qrcodeencoder.qrcodeencodemode=Qrcodeencoder.encode_mode. Alpha_numeric; Break; Case "Numeric": Qrcodeencoder.qrcodeencodemode=Qrcodeencoder.encode_mode. NUMERIC; Break; } //Setting the Encoding measurement degreeQrcodeencoder.qrcodescale =Scale ; //set the encoded versionQrcodeencoder.qrcodeversion =version; if(Correctionlever = ="L")//set encoding error correction{qrcodeencoder.qrcodeerrorcorrect=qrcodeencoder.error_correction. L } Else if(Correctionlever = ="M") {Qrcodeencoder.qrcodeerrorcorrect=qrcodeencoder.error_correction. M } Else if(Correctionlever = ="Q") {Qrcodeencoder.qrcodeerrorcorrect=qrcodeencoder.error_correction. Q; } Else if(Correctionlever = ="H") {Qrcodeencoder.qrcodeerrorcorrect=qrcodeencoder.error_correction. H } Qrcodeencoder.qrcodeforegroundcolor= Btnqrcodeforegroundcolor.backcolor;//set two-dimensional code foreground colorQrcodeencoder.qrcodebackgroundcolor = Btnqrcodebackgroundcolor.backcolor;//set the background color of the two-dimensional codeImage image = Qrcodeencoder.encode (Data,encoding.utf8);//generate two-dimensional code images if(TxtLogo.Text.Trim ()! =string. Empty)//If you have a logo, add a logo{Bitmap BTM=NewBitmap (Txtlogo.text); Bitmap Copyimage=NewBitmap (btm,image. width/5, image. height/5); Graphics g=graphics.fromimage (image); intx = image. Width/2-Copyimage.width/2; inty = image. Height/2-Copyimage.height/2; G.drawimage (Copyimage,x,y); } picencode.image=image; } Private voidBtndecode_click (Objectsender, EventArgs e) { Try { stringDecodedString =NewQrcodedecoder (). Decode (NewQrcodebitmapimage (NewBitmap (picencode.image)), Encoding.UTF8); Txtdata.text=decodedstring; } Catch(Exception ex) {MessageBox.Show (ex). Message); } } Private voidBtnsave_click (Objectsender, EventArgs e)//save QR code to disk{SaveFileDialog SFD=NewSaveFileDialog (); SfD. Filter="JPeg Image|*.jpg| Bitmap image|*.bmp| Gif image|*.gif| PNG Image|*.png"; SfD. Title="save two-dimensional code"; SfD. FileName=string. Empty; if(Picencode.image! =NULL) { if(SFD. ShowDialog () = = DialogResult.OK && sfd. FileName! ="") { using(FileStream fs =(FileStream) sfd. OpenFile ()) {Switch(SFD. FilterIndex) { Case 1: PicEncode.Image.Save (FS, System.Drawing.Imaging.ImageFormat.Jpeg); Break; Case 2: PicEncode.Image.Save (FS, SYSTEM.DRAWING.IMAGING.IMAGEFORMAT.BMP); Break; Case 3: PicEncode.Image.Save (FS, System.Drawing.Imaging.ImageFormat.Gif); Break; Case 4: PicEncode.Image.Save (FS, System.Drawing.Imaging.ImageFormat.Png); Break; }} MessageBox.Show ("Congratulations, save the success! "); } } Else{MessageBox.Show ("Sorry, there are no pictures to save! "); } } Private voidBtnprint_click (Objectsender, EventArgs e) { } Private voidBtnopen_click (Objectsender, EventArgs e)//Open the logo file you want to select{OpenFileDialog ofd=NewOpenFileDialog (); Ofd. Filter="JPeg Image|*.jpg| Bitmap image|*.bmp| Gif image|*.gif| PNG Image|*.png"; if(OFD. ShowDialog () = =DialogResult.OK) {String fileName=OFD. FileName; Picencode.image=NewBitmap (fileName); } } Private voidBtnchooselogo_click (Objectsender, EventArgs e) {OpenFileDialog OFD=NewOpenFileDialog (); Ofd. Filter="JPeg Image|*.jpg| Bitmap image|*.bmp| Gif image|*.gif| PNG Image|*.png"; if(OFD. ShowDialog () = =DialogResult.OK) {Txtlogo.text=OFD. FileName; } } Private voidBtnqrcodeforegroundcolor_click (Objectsender, EventArgs e) {ColorDialog CD=NewColorDialog (); if(CD. ShowDialog () = =DialogResult.OK) {Btnqrcodeforegroundcolor.backcolor=CD. Color; } } Private voidBtnqrcodebackgroundcolor_click (Objectsender, EventArgs e) {ColorDialog CD=NewColorDialog (); if(CD. ShowDialog () = =DialogResult.OK) {Btnqrcodebackgroundcolor.backcolor=CD. Color; } } }}
The effect is as follows:
C # WinForm can add logos by thoughtworks.qrcode generation of QR code decoding