IronQR 教程 C# QR 碼生成器應用程式 C# QR Code Generator Application Curtis Chau 更新日期:8月 20, 2025 Download IronQR NuGet 下載 Start Free Trial Copy for LLMs Copy for LLMs Copy page as Markdown for LLMs Open in ChatGPT Ask ChatGPT about this page Open in Gemini Ask Gemini about this page Open in Grok Ask Grok about this page Open in Perplexity Ask Perplexity about this page Share Share on Facebook Share on X (Twitter) Share on LinkedIn Copy URL Email article This article was translated from English: Does it need improvement? Translated View the article in English IronQR is Iron Software's brand new .NET QR Code library. Leverage cutting edge machine learning techniques to read QR codes from any angle with 99.99% accuracy. Generate and customize new QR codes with ease! Get started with IronQR now! Welcome to our guide on creating QR codes using C#! QR codes and .NET barcode DLL have become popular ways to share information quickly and efficiently. Whether you're developing an app, managing a website, or just looking for a neat way to share links, these codes can be incredibly useful. In this guide, we'll demonstrate how to generate QR codes efficiently using IronQR, ensuring you can generate QR codes tailored to your needs. This library makes it easy for anyone working with C# to create QR codes without getting into complex logic. We'll walk you through the steps, ensuring you have everything you need to get started. Whether you're looking to add QR code generator functionality to your app or just curious about how it's done, you're in the right place. Let's get started. How to Create a QR Code Generator In C# Create a Windows Forms Application in Visual Studio Install QR Library using NuGet Design the form frontend elements Write logic of QR generation Run the application and start creating QR codes Install QR Code Generator Library in C# 立即開始在您的項目中使用 IronQR 並免費試用。 第一步: 免費啟動 Before we start, we need to install the IronQR NuGet Package. Install-Package IronQR IronQR: C# QR Library IronQR is a C# QR Code library for integrating QR code functionality into .NET applications. IronQR supports a wide range of .NET versions and project types, including C#, VB.NET, F#, .NET Core, .NET Standard, .NET Framework, and more, ensuring compatibility with various development environments such as Windows, Linux, macOS, iOS, and Android. IronQR distinguishes itself with its advanced features, including the ability to read QR codes and generate QR codes, support for multiple image formats, and customization options like resizing, styling, and adding logos to QR codes. Some Key Features of IronQR IronQR extends its functionality beyond basic QR code generation, offering several features designed to accommodate a wide range of QR code-related tasks. Let's go through these features and check their example codes which you will be able to integrate into any type of .NET application template like console app. Read QR Codes IronQR excels in decoding QR codes, providing users with a straightforward way to access the information embedded within QR codes. You can quickly and accurately extract data from QR codes, ranging from simple URLs to complex embedded information. :path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-1.cs using IronQr; using IronSoftware.Drawing; using System; using System.Collections.Generic; IronQr.License.LicenseKey = "License-Key"; // Load the image file that contains the QR Code var inputImage = AnyBitmap.FromFile("QRCode.png"); // Prepare the image for QR code detection QrImageInput qrInput = new QrImageInput(inputImage); // Initialize the QR Code reader QrReader qrReader = new QrReader(); // Execute QR Code reading on the provided image IEnumerable<QrResult> qrResults = qrReader.Read(qrInput); // Assuming you have the QR results in qrResults as before foreach (var result in qrResults) { Console.WriteLine(result.Value); // Print the QR code content to the console } Imports IronQr Imports IronSoftware.Drawing Imports System Imports System.Collections.Generic IronQr.License.LicenseKey = "License-Key" ' Load the image file that contains the QR Code Dim inputImage = AnyBitmap.FromFile("QRCode.png") ' Prepare the image for QR code detection Dim qrInput As New QrImageInput(inputImage) ' Initialize the QR Code reader Dim qrReader As New QrReader() ' Execute QR Code reading on the provided image Dim qrResults As IEnumerable(Of QrResult) = qrReader.Read(qrInput) ' Assuming you have the QR results in qrResults as before For Each result In qrResults Console.WriteLine(result.Value) ' Print the QR code content to the console Next result $vbLabelText $csharpLabel The process starts by incorporating the necessary namespaces: IronQr and IronSoftware.Drawing, with a specific mention of Color from the IronSoftware.Drawing namespace to handle image manipulations. Before diving into the QR code reading process, it's essential to activate the software with your license key by assigning it to IronQr.License.LicenseKey. The code then proceeds to load the QR code image from a file using AnyBitmap.FromFile("QRCode.png"). With the image loaded, the next step involves preparing it for QR code detection. This preparation is done by creating a QrImageInput object, which serves as a container for the image. The core of this feature lies in the QrReader class, which is instantiated and used to perform the QR code reading operation. The reader analyzes the prepared image, searching for any QR codes it contains. The result of this operation is a collection of QrResult objects, each representing a detected QR code within the image. To access and utilize the data encoded in the QR codes, the code iterates over the collection of results using a foreach loop. Each QrResult object contains properties such as the QR code's value, which can be accessed and displayed. Custom QR Read Mode Options IronQR provides different modes for reading QR codes, making it versatile for various needs. Mixed Scan Mode: Balances speed and accuracy, useful for QR codes that are not clear or partly hidden. Machine Learning (ML) Scan Mode: Uses advanced technology to read damaged or hard-to-read QR codes, ideal for difficult-to-detect scenarios. Basic Scan Mode: The simplest and fastest way, for clear and straightforward QR codes. :path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-2.cs using IronQr; using IronQr.Enum; using IronSoftware.Drawing; using System.Collections.Generic; IronQr.License.LicenseKey = "License-Key"; // Load the image file that contains the QR Code var inputImage = AnyBitmap.FromFile("QRCode.png"); QrImageInput mixedScanInput = new QrImageInput(inputImage, QrScanMode.OnlyDetectionModel); IEnumerable<QrResult> mixedScanResults = new QrReader().Read(mixedScanInput); QrImageInput mlScanInput = new QrImageInput(inputImage, QrScanMode.OnlyDetectionModel); IEnumerable<QrResult> mlScanResults = new QrReader().Read(mlScanInput); QrImageInput basicScanInput = new QrImageInput(inputImage, QrScanMode.OnlyBasicScan); IEnumerable<QrResult> basicScanResults = new QrReader().Read(basicScanInput); Imports IronQr Imports IronQr.Enum Imports IronSoftware.Drawing Imports System.Collections.Generic IronQr.License.LicenseKey = "License-Key" ' Load the image file that contains the QR Code Dim inputImage = AnyBitmap.FromFile("QRCode.png") Dim mixedScanInput As New QrImageInput(inputImage, QrScanMode.OnlyDetectionModel) Dim mixedScanResults As IEnumerable(Of QrResult) = (New QrReader()).Read(mixedScanInput) Dim mlScanInput As New QrImageInput(inputImage, QrScanMode.OnlyDetectionModel) Dim mlScanResults As IEnumerable(Of QrResult) = (New QrReader()).Read(mlScanInput) Dim basicScanInput As New QrImageInput(inputImage, QrScanMode.OnlyBasicScan) Dim basicScanResults As IEnumerable(Of QrResult) = (New QrReader()).Read(basicScanInput) $vbLabelText $csharpLabel Read Advanced QR Codes IronQR's advanced QR code reading capabilities provide a comprehensive approach to QR code scanning and decoding. This feature set goes beyond basic reading, offering a deeper level of interaction and data extraction. :path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-3.cs using IronQr; using IronSoftware.Drawing; using System; using System.Collections.Generic; IronQr.License.LicenseKey = "License-Key"; var imageToScan = AnyBitmap.FromFile("QRCode.png"); QrImageInput qrInput = new QrImageInput(imageToScan); QrReader qrScanner = new QrReader(); IEnumerable<QrResult> scanResults = qrScanner.Read(qrInput); foreach (QrResult qrResult in scanResults) { Console.WriteLine(qrResult.Value); Console.WriteLine(qrResult.Url); foreach (IronSoftware.Drawing.PointF coordinate in qrResult.Points) { Console.WriteLine($"{coordinate.X}, {coordinate.Y}"); } } Imports IronQr Imports IronSoftware.Drawing Imports System Imports System.Collections.Generic IronQr.License.LicenseKey = "License-Key" Dim imageToScan = AnyBitmap.FromFile("QRCode.png") Dim qrInput As New QrImageInput(imageToScan) Dim qrScanner As New QrReader() Dim scanResults As IEnumerable(Of QrResult) = qrScanner.Read(qrInput) For Each qrResult As QrResult In scanResults Console.WriteLine(qrResult.Value) Console.WriteLine(qrResult.Url) For Each coordinate As IronSoftware.Drawing.PointF In qrResult.Points Console.WriteLine($"{coordinate.X}, {coordinate.Y}") Next coordinate Next qrResult $vbLabelText $csharpLabel To create a QR Code generator using the IronQR library in a C# application, follow these steps carefully. This guide will take you through setting up a Windows form application, installing the IronQR library, writing the code to generate a QR code, and understanding the output. Step 1: Create a Windows Application in Visual Studio Start by launching Visual Studio on your computer. Click on the "Create a New Project" button. Select Windows Forms App as the project type. Make sure to choose C# as the language. Enter a name for your project and select the location to save it. Then on the next screen, select .NET framework. Then click Create. Step 2: Install IronQR Library Now it's time to install the IronQR library in the project. You can install the IronQR library through different methods. Install using NuGet Package Manager Right-click on your project in the Solution Explorer and select Manage NuGet Packages. Type IronQR in the search box and press Enter. Find IronQR in the list and click Install next to it. Install using NuGet Package Manager Console Go to Tools > NuGet Package Manager > Package Manager Console. Type Install-Package IronQR and press Enter. Step 3: Design Frontend 3.1 Title Header Upon launching the QR Code Generator application, users are immediately presented with a striking header titled "QR Generator IronQR," set in a bold and authoritative font. 3.2 Input Section Text Input for QR Code Users can enter the data they wish to encode into their QR code. Logo Selection The "Select Logo" area allows for an additional layer of customization. Users can upload a logo that will be embedded in the QR code. Color Configuration Buttons for color selection allow users to customize their QR code's palette. 3.3 Styling Parameters Dimension Settings Allows users to specify the overall size of the QR code. Margin Settings Allows users to specify the white space surrounding the QR code. 3.4 Output Preview Provides a real-time preview of the generated QR code. 3.5 Action Buttons Generate QR Triggers the QR code creation process. Save QR Code Opens a save dialog for saving the QR code. Reset Form Clears all previous inputs and selections. Step 4: Write Backend Logic 4.1 Setup and Initialization Includes necessary namespaces: IronQr and IronSoftware.Drawing. :path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-4.cs using IronQr; using IronSoftware.Drawing; using Color = IronSoftware.Drawing.Color; Imports IronQr Imports IronSoftware.Drawing Imports Color = IronSoftware.Drawing.Color $vbLabelText $csharpLabel :path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-5.cs public QR_Generator() { InitializeComponent(); SetLicenseKey(); EnsureDirectoryExists(qrCodesDirectory); } 'INSTANT VB WARNING: The following constructor is declared outside of its associated class: 'ORIGINAL LINE: public QR_Generator() Public Sub New() InitializeComponent() SetLicenseKey() EnsureDirectoryExists(qrCodesDirectory) End Sub $vbLabelText $csharpLabel 4.2 License Key Configuration Applies a valid license key for the IronQR library: private static void SetLicenseKey() { IronQr.License.LicenseKey = "YOUR_LICENSE_KEY"; } private static void SetLicenseKey() { IronQr.License.LicenseKey = "YOUR_LICENSE_KEY"; } Private Shared Sub SetLicenseKey() IronQr.License.LicenseKey = "YOUR_LICENSE_KEY" End Sub $vbLabelText $csharpLabel Replace "YOUR_LICENSE_KEY" with your actual license key. 4.3 Directory Management Checks or creates necessary directories. :path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-7.cs private static void EnsureDirectoryExists(string path) { if (!System.IO.Directory.Exists(path)) { System.IO.Directory.CreateDirectory(path); } } Private Shared Sub EnsureDirectoryExists(ByVal path As String) If Not System.IO.Directory.Exists(path) Then System.IO.Directory.CreateDirectory(path) End If End Sub $vbLabelText $csharpLabel The path to the QR codes directory is defined in the QR_Generator class constructor as qrCodesDirectory, which combines the application's startup path with a "QR Codes" folder name: :path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-8.cs string qrCodesDirectory = System.IO.Path.Combine(Application.StartupPath, "QR Codes"); Dim qrCodesDirectory As String = System.IO.Path.Combine(Application.StartupPath, "QR Codes") $vbLabelText $csharpLabel 4.4 Color Selection Provides color dialog components and utility functions. :path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-9.cs private string ColorToHex(System.Drawing.Color color) { return $"#{color.R:X2}{color.G:X2}{color.B:X2}"; } Private Function ColorToHex(ByVal color As System.Drawing.Color) As String Return $"#{color.R:X2}{color.G:X2}{color.B:X2}" End Function $vbLabelText $csharpLabel The UpdateColor method takes the selected color and converts it to the IronSoftware.Drawing.Color format using the hexadecimal string, and updates either the QR code's foreground or background color depending on the selection. It also updates the UI to reflect the new color choice: :path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-10.cs private void UpdateColor(ref Color targetColor, Control display, bool isBackground) { if (select_color.ShowDialog() == DialogResult.OK) { var hexColor = ColorToHex(select_color.Color); targetColor = new Color(hexColor); display.BackColor = select_color.Color; } } Private Sub UpdateColor(ByRef targetColor As Color, ByVal display As Control, ByVal isBackground As Boolean) If select_color.ShowDialog() = DialogResult.OK Then Dim hexColor = ColorToHex(select_color.Color) targetColor = New Color(hexColor) display.BackColor = select_color.Color End If End Sub $vbLabelText $csharpLabel 4.5 Adding Logo Allows the user to select a logo. :path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-11.cs private void btn_logo_Click(object sender, EventArgs e) { if (select_logo.ShowDialog() == DialogResult.OK) { try { logoBmp = new AnyBitmap(select_logo.FileName); selected_logo.Image = Image.FromFile(select_logo.FileName); } catch (Exception ex) { ShowError("An error occurred while loading the logo", ex.Message); } } } Private Sub btn_logo_Click(ByVal sender As Object, ByVal e As EventArgs) If select_logo.ShowDialog() = DialogResult.OK Then Try logoBmp = New AnyBitmap(select_logo.FileName) selected_logo.Image = Image.FromFile(select_logo.FileName) Catch ex As Exception ShowError("An error occurred while loading the logo", ex.Message) End Try End If End Sub $vbLabelText $csharpLabel 4.6 QR Code Generation Contains logic for generating QR codes based on user inputs. :path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-12.cs private void btn_generate_Click(object sender, EventArgs e) { GenerateQRCode(); } Private Sub btn_generate_Click(ByVal sender As Object, ByVal e As EventArgs) GenerateQRCode() End Sub $vbLabelText $csharpLabel The QrOptions object defines the error correction level, enhancing the QR code's resilience to damage or obscuration. The CreateStyleOptions method generates a QrStyleOptions object, which includes the user's custom settings like colors, dimensions, and the logo. Here's the method in detail: :path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-14.cs private QrStyleOptions CreateStyleOptions() { return new QrStyleOptions { BackgroundColor = bgColor, Color = color, Dimensions = txt_dimension.Value > 0 ? Convert.ToInt32(txt_dimension.Value) : throw new ArgumentException("Please select valid dimensions!"), Margins = Convert.ToInt32(txt_margin.Value), Logo = logoBmp != null ? new QrLogo { Bitmap = logoBmp, Width = 50, Height = 50, CornerRadius = 5 } : null }; } Private Function CreateStyleOptions() As QrStyleOptions 'INSTANT VB TODO TASK: Throw expressions are not converted by Instant VB: 'ORIGINAL LINE: return new QrStyleOptions { BackgroundColor = bgColor, Color = color, Dimensions = txt_dimension.Value > 0 ? Convert.ToInt32(txt_dimension.Value) : throw new ArgumentException("Please select valid dimensions!"), Margins = Convert.ToInt32(txt_margin.Value), Logo = logoBmp != null ? new QrLogo { Bitmap = logoBmp, Width = 50, Height = 50, CornerRadius = 5 } : null }; Return New QrStyleOptions With { .BackgroundColor = bgColor, .Color = color, .Dimensions = If(txt_dimension.Value > 0, Convert.ToInt32(txt_dimension.Value), throw New ArgumentException("Please select valid dimensions!")), .Margins = Convert.ToInt32(txt_margin.Value), .Logo = If(logoBmp IsNot Nothing, New QrLogo With { .Bitmap = logoBmp, .Width = 50, .Height = 50, .CornerRadius = 5 }, Nothing) } End Function $vbLabelText $csharpLabel 4.7 Saving the QR Code Handles saving the generated QR code. :path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-15.cs private void btn_save_Click(object sender, EventArgs e) { SaveQRCode(); } private void SaveQRCode() { if (pictureBox.Image == null) { MessageBox.Show("There is no QR code to save.", "Error"); return; } saveFileDialog.Filter = "PNG Files|*.png|JPEG Files|*.jpg"; saveFileDialog.Title = "Save QR Code"; saveFileDialog.FileName = "QRCode"; if (saveFileDialog.ShowDialog() == DialogResult.OK) { try { pictureBox.Image.Save(saveFileDialog.FileName, DetermineImageFormat(saveFileDialog.FileName)); MessageBox.Show("QR Code has been saved!", "Success"); } catch (Exception ex) { ShowError("An error occurred while saving the QR code", ex.Message); } } } Private Sub btn_save_Click(ByVal sender As Object, ByVal e As EventArgs) SaveQRCode() End Sub Private Sub SaveQRCode() If pictureBox.Image Is Nothing Then MessageBox.Show("There is no QR code to save.", "Error") Return End If saveFileDialog.Filter = "PNG Files|*.png|JPEG Files|*.jpg" saveFileDialog.Title = "Save QR Code" saveFileDialog.FileName = "QRCode" If saveFileDialog.ShowDialog() = DialogResult.OK Then Try pictureBox.Image.Save(saveFileDialog.FileName, DetermineImageFormat(saveFileDialog.FileName)) MessageBox.Show("QR Code has been saved!", "Success") Catch ex As Exception ShowError("An error occurred while saving the QR code", ex.Message) End Try End If End Sub $vbLabelText $csharpLabel :path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-16.cs private System.Drawing.Imaging.ImageFormat DetermineImageFormat(string filePath) { return System.IO.Path.GetExtension(filePath).ToLower() == ".jpg" ? System.Drawing.Imaging.ImageFormat.Jpeg : System.Drawing.Imaging.ImageFormat.Png; } Private Function DetermineImageFormat(ByVal filePath As String) As System.Drawing.Imaging.ImageFormat Return If(System.IO.Path.GetExtension(filePath).ToLower() = ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg, System.Drawing.Imaging.ImageFormat.Png) End Function $vbLabelText $csharpLabel 4.8 Resetting the Application Clears user inputs and resets the form state. :path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-17.cs private void btn_reset_Click(object sender, EventArgs e) { ResetFields(); } private void ResetFields() { txt_QR.Text = string.Empty; txt_dimension.Value = 200; txt_margin.Value = 0; bgColor = Color.White; color = Color.Black; txt_selected_color.BackColor = System.Drawing.Color.White; txt_selected_bgcolor.BackColor = System.Drawing.Color.Black; logoBmp = null; selected_logo.Image = null; pictureBox.Image = null; } Private Sub btn_reset_Click(ByVal sender As Object, ByVal e As EventArgs) ResetFields() End Sub Private Sub ResetFields() txt_QR.Text = String.Empty txt_dimension.Value = 200 txt_margin.Value = 0 bgColor = Color.White color = Color.Black txt_selected_color.BackColor = System.Drawing.Color.White txt_selected_bgcolor.BackColor = System.Drawing.Color.Black logoBmp = Nothing selected_logo.Image = Nothing pictureBox.Image = Nothing End Sub $vbLabelText $csharpLabel 4.9 Error Handling Displays error messages to users. :path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-18.cs private static void ShowError(string title, string message) { MessageBox.Show($"{title}: {message}", "Error"); } Private Shared Sub ShowError(ByVal title As String, ByVal message As String) MessageBox.Show($"{title}: {message}", "Error") End Sub $vbLabelText $csharpLabel 4.10 Complete Code Example The full code combining all the above features can be found in the example file linked to your project. :path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-19.cs using IronQr; using IronSoftware.Drawing; using Color = IronSoftware.Drawing.Color; namespace IronQR_QR_Generator_WinForms { public partial class QR_Generator : Form { string qrCodesDirectory = System.IO.Path.Combine(Application.StartupPath, "QR Codes"); Color bgColor = Color.White; Color color = Color.Black; AnyBitmap? logoBmp = null; public QR_Generator() { InitializeComponent(); SetLicenseKey(); EnsureDirectoryExists(qrCodesDirectory); } private static void SetLicenseKey() { IronQr.License.LicenseKey = "License-Key"; } private static void EnsureDirectoryExists(string path) { if (!System.IO.Directory.Exists(path)) { System.IO.Directory.CreateDirectory(path); } } private void btn_color_Click(object sender, EventArgs e) { UpdateColor(ref color, txt_selected_color, false); } private void btn_background_Click(object sender, EventArgs e) { UpdateColor(ref bgColor, txt_selected_bgcolor, true); } private string ColorToHex(System.Drawing.Color color) { return $"#{color.R:X2}{color.G:X2}{color.B:X2}"; } private void UpdateColor(ref Color targetColor, Control display, bool isBackground) { if (select_color.ShowDialog() == DialogResult.OK) { var hexColor = ColorToHex(select_color.Color); targetColor = new Color(hexColor); display.BackColor = select_color.Color; } } private void btn_logo_Click(object sender, EventArgs e) { if (select_logo.ShowDialog() == DialogResult.OK) { try { logoBmp = new AnyBitmap(select_logo.FileName); selected_logo.Image = Image.FromFile(select_logo.FileName); } catch (Exception ex) { ShowError("An error occurred while loading the logo", ex.Message); } } } private void btn_generate_Click(object sender, EventArgs e) { GenerateQRCode(); } private void GenerateQRCode() { try { var options = new QrOptions(QrErrorCorrectionLevel.High); var myQr = QrWriter.Write(txt_QR.Text, options); var style = CreateStyleOptions(); var qrImage = myQr.Save(style); var fileName = $"{DateTime.Now:yyyyMMddHHmmssfff}_QR.png"; var fullPath = System.IO.Path.Combine(qrCodesDirectory, fileName); qrImage.SaveAs(fullPath); pictureBox.Image = Image.FromFile(fullPath); } catch (Exception ex) { ShowError("An error occurred during QR code generation or saving", ex.Message); } } private QrStyleOptions CreateStyleOptions() { return new QrStyleOptions { BackgroundColor = bgColor, Color = color, Dimensions = txt_dimension.Value > 0 ? Convert.ToInt32(txt_dimension.Value) : throw new ArgumentException("Please select valid dimensions!"), Margins = Convert.ToInt32(txt_margin.Value), Logo = logoBmp != null ? new QrLogo { Bitmap = logoBmp, Width = 50, Height = 50, CornerRadius = 5 } : null }; } private void btn_save_Click(object sender, EventArgs e) { SaveQRCode(); } private void SaveQRCode() { if (pictureBox.Image == null) { MessageBox.Show("There is no QR code to save.", "Error"); return; } saveFileDialog.Filter = "PNG Files|*.png|JPEG Files|*.jpg"; saveFileDialog.Title = "Save QR Code"; saveFileDialog.FileName = "QRCode"; if (saveFileDialog.ShowDialog() == DialogResult.OK) { try { pictureBox.Image.Save(saveFileDialog.FileName, DetermineImageFormat(saveFileDialog.FileName)); MessageBox.Show("QR Code has been saved!", "Success"); } catch (Exception ex) { ShowError("An error occurred while saving the QR code", ex.Message); } } } private System.Drawing.Imaging.ImageFormat DetermineImageFormat(string filePath) { return System.IO.Path.GetExtension(filePath).ToLower() == ".jpg" ? System.Drawing.Imaging.ImageFormat.Jpeg : System.Drawing.Imaging.ImageFormat.Png; } private void btn_reset_Click(object sender, EventArgs e) { ResetFields(); } private void ResetFields() { txt_QR.Text = string.Empty; txt_dimension.Value = 200; txt_margin.Value = 0; bgColor = Color.White; color = Color.Black; txt_selected_color.BackColor = bgColor; txt_selected_bgcolor.BackColor = color; logoBmp = null; selected_logo.Image = null; pictureBox.Image = null; } private static void ShowError(string title, string message) { MessageBox.Show($"{title}: {message}", "Error"); } } } Imports IronQr Imports IronSoftware.Drawing Imports Color = IronSoftware.Drawing.Color Namespace IronQR_QR_Generator_WinForms Partial Public Class QR_Generator Inherits Form Private qrCodesDirectory As String = System.IO.Path.Combine(Application.StartupPath, "QR Codes") Private bgColor As Color = Color.White Private color As Color = Color.Black Private logoBmp? As AnyBitmap = Nothing Public Sub New() InitializeComponent() SetLicenseKey() EnsureDirectoryExists(qrCodesDirectory) End Sub Private Shared Sub SetLicenseKey() IronQr.License.LicenseKey = "License-Key" End Sub Private Shared Sub EnsureDirectoryExists(ByVal path As String) If Not System.IO.Directory.Exists(path) Then System.IO.Directory.CreateDirectory(path) End If End Sub Private Sub btn_color_Click(ByVal sender As Object, ByVal e As EventArgs) UpdateColor(color, txt_selected_color, False) End Sub Private Sub btn_background_Click(ByVal sender As Object, ByVal e As EventArgs) UpdateColor(bgColor, txt_selected_bgcolor, True) End Sub Private Function ColorToHex(ByVal color As System.Drawing.Color) As String Return $"#{color.R:X2}{color.G:X2}{color.B:X2}" End Function Private Sub UpdateColor(ByRef targetColor As Color, ByVal display As Control, ByVal isBackground As Boolean) If select_color.ShowDialog() = System.Windows.Forms.DialogResult.OK Then Dim hexColor = ColorToHex(select_color.Color) targetColor = New Color(hexColor) display.BackColor = select_color.Color End If End Sub Private Sub btn_logo_Click(ByVal sender As Object, ByVal e As EventArgs) If select_logo.ShowDialog() = System.Windows.Forms.DialogResult.OK Then Try logoBmp = New AnyBitmap(select_logo.FileName) selected_logo.Image = Image.FromFile(select_logo.FileName) Catch ex As Exception ShowError("An error occurred while loading the logo", ex.Message) End Try End If End Sub Private Sub btn_generate_Click(ByVal sender As Object, ByVal e As EventArgs) GenerateQRCode() End Sub Private Sub GenerateQRCode() Try Dim options = New QrOptions(QrErrorCorrectionLevel.High) Dim myQr = QrWriter.Write(txt_QR.Text, options) Dim style = CreateStyleOptions() Dim qrImage = myQr.Save(style) Dim fileName = $"{DateTime.Now:yyyyMMddHHmmssfff}_QR.png" Dim fullPath = System.IO.Path.Combine(qrCodesDirectory, fileName) qrImage.SaveAs(fullPath) pictureBox.Image = Image.FromFile(fullPath) Catch ex As Exception ShowError("An error occurred during QR code generation or saving", ex.Message) End Try End Sub Private Function CreateStyleOptions() As QrStyleOptions 'INSTANT VB TODO TASK: Throw expressions are not converted by Instant VB: 'ORIGINAL LINE: return new QrStyleOptions { BackgroundColor = bgColor, Color = color, Dimensions = txt_dimension.Value > 0 ? Convert.ToInt32(txt_dimension.Value) : throw new ArgumentException("Please select valid dimensions!"), Margins = Convert.ToInt32(txt_margin.Value), Logo = logoBmp != null ? new QrLogo { Bitmap = logoBmp, Width = 50, Height = 50, CornerRadius = 5 } : null }; Return New QrStyleOptions With { .BackgroundColor = bgColor, .Color = color, .Dimensions = If(txt_dimension.Value > 0, Convert.ToInt32(txt_dimension.Value), throw New ArgumentException("Please select valid dimensions!")), .Margins = Convert.ToInt32(txt_margin.Value), .Logo = If(logoBmp IsNot Nothing, New QrLogo With { .Bitmap = logoBmp, .Width = 50, .Height = 50, .CornerRadius = 5 }, Nothing) } End Function Private Sub btn_save_Click(ByVal sender As Object, ByVal e As EventArgs) SaveQRCode() End Sub Private Sub SaveQRCode() If pictureBox.Image Is Nothing Then MessageBox.Show("There is no QR code to save.", "Error") Return End If saveFileDialog.Filter = "PNG Files|*.png|JPEG Files|*.jpg" saveFileDialog.Title = "Save QR Code" saveFileDialog.FileName = "QRCode" If saveFileDialog.ShowDialog() = System.Windows.Forms.DialogResult.OK Then Try pictureBox.Image.Save(saveFileDialog.FileName, DetermineImageFormat(saveFileDialog.FileName)) MessageBox.Show("QR Code has been saved!", "Success") Catch ex As Exception ShowError("An error occurred while saving the QR code", ex.Message) End Try End If End Sub Private Function DetermineImageFormat(ByVal filePath As String) As System.Drawing.Imaging.ImageFormat Return If(System.IO.Path.GetExtension(filePath).ToLower() = ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg, System.Drawing.Imaging.ImageFormat.Png) End Function Private Sub btn_reset_Click(ByVal sender As Object, ByVal e As EventArgs) ResetFields() End Sub Private Sub ResetFields() txt_QR.Text = String.Empty txt_dimension.Value = 200 txt_margin.Value = 0 bgColor = Color.White color = Color.Black txt_selected_color.BackColor = bgColor txt_selected_bgcolor.BackColor = color logoBmp = Nothing selected_logo.Image = Nothing pictureBox.Image = Nothing End Sub Private Shared Sub ShowError(ByVal title As String, ByVal message As String) MessageBox.Show($"{title}: {message}", "Error") End Sub End Class End Namespace $vbLabelText $csharpLabel Step 5: Run Application When the application is executed, the main window appears as organized with sections for input, styling, output, and actions. Follow the user interface to enter data, customize your QR code, and generate and save the QR code as desired. Conclusion In conclusion, this guide has walked you through the process of generating QR codes using the IronQR library in a C# application. By breaking down the steps from setting up your project in Visual Studio, integrating the IronQR library, designing a user-friendly interface, and writing the backend logic, we've demonstrated how accessible it is to add QR code functionality to your applications. For those interested in exploring the capabilities of IronQR further, it's worth noting that IronQR offers a free trial to get you started. Should you decide to integrate IronQR into your projects, licenses start at $799, providing a cost-effective solution for professional-grade QR code generation. 常見問題解答 如何在 C# 中創建二維碼生成器應用程式? 要在 C# 中創建二維碼生成器應用程式,可以使用 IronQR 庫。首先在 Visual Studio 中設置 Windows Forms 應用程式,通過 NuGet 安裝 IronQR,設計應用程式的前端。使用 IronQR 的功能實現二維碼生成邏輯,例如顏色選擇和徽標嵌入。 .NET 二維碼庫的優勢是什麼? .NET 二維碼庫如 IronQR 提供高級功能,例如高準確度讀取二維碼、生成二維碼的自訂選項,並支持各種 .NET 環境。它還允許二維碼調整大小和樣式。 如何在 C# 中處理二維碼生成時的錯誤? 在 C# 中,可以通過使用 try-catch 塊實施適當的錯誤處理機制來處理二維碼生成期間的錯誤。IronQR 有助於平滑的錯誤管理,確保在二維碼創建過程中出現的任何問題得到高效解決。 我可以使用二維碼庫將徽標嵌入到二維碼中嗎? 是的,您可以使用 IronQR 庫將徽標嵌入到二維碼中。此功能允許您通過將自定義徽標納入設計來增強二維碼的品牌化。 如何保存 C# 應用程式中生成的二維碼? 您可以使用 IronQR 的功能指定存儲目錄來保存 C# 應用程式中生成的二維碼。這允許您高效管理和存儲應用程式內生成的二維碼。 配置二維碼庫的許可密鑰需要哪些步驟? 要配置 IronQR 的許可密鑰,您需要在應用程式中整合許可代碼。這通常涉及添加 IronQR 提供的特定代碼行,以使用購買的許可激活庫。 如何在 C# 應用程式中使用特定顏色樣式化二維碼? IronQR 允許您通過使用其顏色自訂功能來為二維碼設置樣式。您可以使用集成到應用程式中的顏色選擇對話框選擇二維碼的前景和背景顏色。 在 Visual Studio 中安裝二維碼庫的過程是什麼? 要在 Visual Studio 中安裝像 IronQR 這樣的二維碼庫,請使用 NuGet 套件管理器。搜索 'IronQR' 並點擊 'Install',將其添加到專案中。或者,使用套件管理器控制台使用命令 'Install-Package IronQR'。 Curtis Chau 立即與工程團隊聊天 技術作家 Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。 準備好開始了嗎? Nuget 下載 47,669 | 版本: 2025.11 剛剛發布 免費 NuGet 下載 總下載量:47,669 查看許可證