Je me demande si quelqu'un a créé plusieurs codes QR ? Dans cet article, je vais vous présenter comment utiliser C# pour générer des codes QR. Tout d'abord, je parlerai des trois classes QRCodeGenerator, QRCodeData et QRCode requises pour générer des codes QR. Pour une compréhension facile plus tard. Quelles sont leurs responsabilités ? QRCodeGenerator : utilisé pour générer l'objet de données stocké dans le code QR via la méthode spécifiée, qui est la matrice au milieu du code QR dans QRCodeData. Ensuite, QRCode obtient le QRCodeData et génère le code QR
Récemment, j'ai travaillé sur certaines choses liées aux codes QR, donc je suis entré en contact avec certains codes QR, donc depuis que je les ai utilisés, je pense qu'ils ont été utilisé
En fait, il existe d'innombrables articles sur les codes QR, et beaucoup d'entre eux sont écrits très sérieusement et sont très bons, mais c'est comme apprendre. Ce n'est pas parce que les autres le savent. vous n'avez aucune valeur dans l'apprentissage et l'enregistrement, donc l'apprentissage ne vient pas tôt ou tard
a) Tout d'abord, nous créons un. nouveau projet Class Library, nommé ici chestnut_qrcode
b) Ensuite, introduisez le package QRCoder via NuGet
c) Voir l'image pour le fonctionnement
d) Après une installation réussie, la référence du QRCoder apparaîtra dans la référence du projet
e) À l'heure actuelle, le travail d'introduction est terminé, mais il peut être facilement Créer un Encoder.cs 静态公共类
Nous parlons d'abord ici des conditions requises pour générer du code QR Trois classes :
QRCodeGenerator
QRCodeData
QRCode
Quelles sont leurs responsabilités ?
QRCodeGenerator : utilisé pour générer l'objet de données stocké dans le code QR d'une manière spécifiée, c'est-à-dire QRCodeData Matrix au milieu du QR code , puis QRCode récupère QRCodeData et génère le QR code
Encoder.cs Le l'intégralité du code est la suivante :
using System.Drawing; namespace chestnut_qrcode { /// <summary> /// 二维码编码器 /// </summary> public static class Encoder { /// <summary> /// 生成二维码 /// </summary> /// <param name="msg">信息</param> /// <param name="version">版本 1 ~ 40</param> /// <param name="pixel">像素点大小</param> /// <param name="icon_path">图标路径</param> /// <param name="icon_size">图标尺寸</param> /// <param name="icon_border">图标边框厚度</param> /// <param name="white_edge">二维码白边</param> /// <returns>位图</returns> public static Bitmap code(string msg, int version, int pixel, string icon_path, int icon_size, int icon_border, bool white_edge) { QRCoder.QRCodeGenerator code_generator = new QRCoder.QRCodeGenerator(); QRCoder.QRCodeData code_data = code_generator.CreateQrCode(msg, QRCoder.QRCodeGenerator.ECCLevel.M/* 这里设置容错率的一个级别 */, true, true, QRCoder.QRCodeGenerator.EciMode.Utf8, version); QRCoder.QRCode code = new QRCoder.QRCode(code_data); Bitmap icon = new Bitmap(icon_path); Bitmap bmp = code.GetGraphic(pixel, Color.Black, Color.White, icon, icon_size, icon_border, white_edge); return bmp; } } }
Les paramètres entre tolérance aux pannes et version sont liés au format d'encodage. Certains formats ne supportent pas le chinois
Ici, seaconch utilise le projet winform, prenez simplement une capture d'écran
using System; using System.Drawing; using System.Windows.Forms; namespace chestnut_form { public partial class frm_qrcode : Form { public frm_qrcode() { InitializeComponent(); } // 窗体加载 private void frm_qrcode_Load(object sender, EventArgs e) { cb_version.SelectedIndex = 1; cb_pixel.SelectedIndex = 0; cb_icon_size.SelectedIndex = 0; cb_icon_border.SelectedIndex = 1; } // 编码 private void btn_encode_Click(object sender, EventArgs e) { int version = Convert.ToInt16(cb_version.Text); int pixel = Convert.ToInt16(cb_pixel.Text); string str_msg = tb_msg.Text; int int_icon_size = Convert.ToInt16(cb_icon_size.Text); int int_icon_border = Convert.ToInt16(cb_icon_border.Text); bool b_we = rb_we_y.Checked ? true : false; Bitmap bmp = chestnut_qrcode.Encoder.code(str_msg, version, pixel, "E:/seaconch/git/1.jpg", int_icon_size, int_icon_border, b_we); pb_qrcode.Image = bmp; } // 保存 private void btn_save_Click(object sender, EventArgs e) { if (pb_qrcode.Image != null) using (SaveFileDialog sfd = new SaveFileDialog()) { sfd.Filter = "(*.png)|*.png|(*.bmp)|*.bmp"; if (sfd.ShowDialog() == DialogResult.OK) pb_qrcode.Image.Save(sfd.FileName); } } } }
Regardez l'effet de génération de code QR C#
Articles connexes :
[Tutoriel c#】Type de données C#
Vidéos associées :
Tutoriel vidéo C# de la Geek Academy
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!