<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      C# 生成二維碼方法(QRCoder)

      前言

      二維碼很多地方都有使用到。如果是靜態的二維碼還是比較好處理的,通過在線工具就可以直接生成一張二維碼圖片,比如:草料二維碼。

      但有的時候是需要動態生成的(根據動態數據生成),這個使用在線就工具就無法實現了。最好是能在代碼中直接生成一個二維碼圖片,介紹下使用QRCoder類庫在代碼中生成二維碼。

      網上生成二維碼的組件還是挺多的,但是真正好用且快速的卻不多。QRCoder就是我在眾多中找到的,它的生成速度快、而且使用也相當方便。

      開始編碼

      1、安裝 QRCoder組件。在項目上通過NuGet包管理器來安裝,搜索名稱:QRCoder

      2、在代碼中添加引用:using QRCoder;

      3、編碼生成

      private void RenderQrCode()
      {
      string level = "Q";// comboBoxECC.SelectedItem.ToString();
      QRCodeGenerator.ECCLevel eccLevel = (QRCodeGenerator.ECCLevel)(level == "L" ? 0 : level == "M" ? 1 : level == "Q" ? 2 : 3);
      using (QRCodeGenerator qrGenerator = new QRCodeGenerator())
      {
      using (QRCodeData qrCodeData = qrGenerator.CreateQrCode("9f3274ec-1481-4988-a3c8-698bbafbf14b", eccLevel))
      {
      using (QRCode qrCode = new QRCode(qrCodeData))
      {

      pictureBoxQRCode.BackgroundImage = qrCode.GetGraphic(20, Color.Black, Color.White,
      null, 50);

      this.pictureBoxQRCode.Size = new System.Drawing.Size(pictureBoxQRCode.Width, pictureBoxQRCode.Height);
      //Set the SizeMode to center the image.
      this.pictureBoxQRCode.SizeMode = PictureBoxSizeMode.CenterImage;

      pictureBoxQRCode.SizeMode = PictureBoxSizeMode.StretchImage;
      }
      }
      }
      }

       

      上面代碼運行的結果

       

       

      還可以加上logo

      private Bitmap GetIconBitmap()
      {
          Bitmap img = null;
          if (iconPath.Text.Length > 0)
          {
              try
              {
                  img = new Bitmap(iconPath.Text);
              }
              catch (Exception)
              {
              }
          }
          return img;
      }

      完整代碼

      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 QRCoder;
      using System.Drawing.Imaging;
      using System.IO;

      namespace QRCoderDemo
      {
          public partial class Form1 : Form
          {
              public Form1()
              {
                  InitializeComponent();
              }

              private void Form1_Load(object sender, EventArgs e)
              {
                  comboBoxECC.SelectedIndex = 0; //Pre-select ECC level "L"
                  RenderQrCode();
              }

              private void buttonGenerate_Click(object sender, EventArgs e)
              {
                  RenderQrCode();
              }

              private void RenderQrCode()
              {
                  string level = comboBoxECC.SelectedItem.ToString();
                  QRCodeGenerator.ECCLevel eccLevel = (QRCodeGenerator.ECCLevel)(level == "L" ? 0 : level == "M" ? 1 : level == "Q" ? 2 : 3);
                  using (QRCodeGenerator qrGenerator = new QRCodeGenerator())
                  {
                      using (QRCodeData qrCodeData = qrGenerator.CreateQrCode(textBoxQRCode.Text, eccLevel))
                      {
                          using (QRCode qrCode = new QRCode(qrCodeData))
                          {

                              pictureBoxQRCode.BackgroundImage = qrCode.GetGraphic(20, Color.Black, Color.White,
                                  GetIconBitmap(), (int) iconSize.Value);

                               this.pictureBoxQRCode.Size = new System.Drawing.Size(pictureBoxQRCode.Width, pictureBoxQRCode.Height);
                              //Set the SizeMode to center the image.
                              this.pictureBoxQRCode.SizeMode = PictureBoxSizeMode.CenterImage;

                              pictureBoxQRCode.SizeMode = PictureBoxSizeMode.StretchImage;
                          }
                      }
                  }
              }

              private Bitmap GetIconBitmap()
              {
                  Bitmap img = null;
                  if (iconPath.Text.Length > 0)
                  {
                      try
                      {
                          img = new Bitmap(iconPath.Text);
                      }
                      catch (Exception)
                      {
                      }
                  }
                  return img;
              }

              private void selectIconBtn_Click(object sender, EventArgs e)
              {
                  OpenFileDialog openFileDlg = new OpenFileDialog();
                  openFileDlg.Title = "Select icon";
                  openFileDlg.Multiselect = false;
                  openFileDlg.CheckFileExists = true;
                  if (openFileDlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                  {
                      iconPath.Text = openFileDlg.FileName;
                      if (iconSize.Value == 0)
                      {
                          iconSize.Value = 15;
                      }
                  }
                  else
                  {
                      iconPath.Text = "";
                  }
              }


              private void btn_save_Click(object sender, EventArgs e)
              {

                  // Displays a SaveFileDialog so the user can save the Image
                  SaveFileDialog saveFileDialog1 = new SaveFileDialog();
                  saveFileDialog1.Filter = "Bitmap Image|*.bmp|PNG Image|*.png|JPeg Image|*.jpg|Gif Image|*.gif";
                  saveFileDialog1.Title = "Save an Image File";
                  saveFileDialog1.ShowDialog();

                  // If the file name is not an empty string open it for saving.
                  if (saveFileDialog1.FileName != "")
                  {
                      // Saves the Image via a FileStream created by the OpenFile method.
                      using (FileStream fs = (System.IO.FileStream) saveFileDialog1.OpenFile())
                      {
                          // Saves the Image in the appropriate ImageFormat based upon the
                          // File type selected in the dialog box.
                          // NOTE that the FilterIndex property is one-based.

                          ImageFormat imageFormat = null;
                          switch (saveFileDialog1.FilterIndex)
                          {
                              case 1:
                                  imageFormat = ImageFormat.Bmp;
                                  break;
                              case 2:
                                  imageFormat = ImageFormat.Png;
                                  break;
                              case 3:
                                  imageFormat = ImageFormat.Jpeg;
                                  break;
                              case 4:
                                  imageFormat = ImageFormat.Gif;
                                  break;
                              default:
                                  throw new NotSupportedException("File extension is not supported");
                          }

                          pictureBoxQRCode.BackgroundImage.Save(fs, imageFormat);
                          fs.Close();
                      }
                  }





              }

              public void ExportToBmp(string path)
              {

              }

              private void textBoxQRCode_TextChanged(object sender, EventArgs e)
              {
                  RenderQrCode();
              }

              private void comboBoxECC_SelectedIndexChanged(object sender, EventArgs e)
              {
                  RenderQrCode();
              }
          }
      }

       

      posted @ 2022-11-23 12:35  春光牛牛  閱讀(1989)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 黄石市| 丰满少妇被猛烈进出69影院| 玩弄漂亮少妇高潮白浆| 国精产品999国精产品官网| 人妻无码久久精品| 中文人妻av高清一区二区| 亚洲国产成人av毛片大全| 亚洲无码在线免费观看| 在线精品亚洲区一区二区| 久久香蕉国产线看观看猫咪av| 国产一区二区三区不卡视频| 麻豆精品一区二区视频在线| 久久涩综合一区二区三区| 日本中文字幕有码在线视频| 99国内精品久久久久久久| 国产精品综合一区二区三区| 性欧美VIDEOFREE高清大喷水| 午夜天堂精品久久久久| 亚洲高请码在线精品av| 浴室人妻的情欲hd三级国产| 亚洲一区二区三午夜福利| 久久久久99精品成人片| 国产高清精品在线91| 2021国产成人精品久久| 特级毛片在线大全免费播放| 大地资源高清免费观看| 亚洲av色香蕉一区二区三区精品 | 人妻无码| 中文字幕免费不卡二区| 国产成人MV视频在线观看| 国产一区二区av天堂热| 伊人天天久大香线蕉av色| 久久国产成人精品国产成人亚洲 | 丰满岳乱妇久久久| 平远县| 久久天天躁狠狠躁夜夜婷| 久久se精品一区精品二区国产| 国产精品无码无卡在线观看久| 国产69精品久久久久人妻刘玥| 成全我在线观看免费第二季| 精品无码国产一区二区三区av|