C# QR Kod Oluşturucu Application

This article was translated from English: Does it need improvement?
Translated
View the article in English

C# kullanarak QR kodları oluşturma rehberimize hoş geldiniz! QR kodları ve .NET barkod DLL, bilgiyi hızlı ve verimli bir şekilde paylaşmanın popüler yolları haline geldi. Bir uygulama geliştiriyor, bir web sitesi yönetiyor veya sadece bağlantıları paylaşmak için düzenli bir yol arıyor olun, bu kodlar inanılmaz derecede faydalı olabilir. Bu kılavuzda, IronQR kullanarak QR kodlarını nasıl verimli bir şekilde üreteceğimizi göstereceğiz, böylece ihtiyaçınıza uygun QR kodları oluşturabilirsiniz. Bu kütüphane, C# ile çalışan herkes için karmaşık mantıklarla uğraşmadan QR kodları oluşturmayı kolaylaştırır. Adımları sizinle birlikte geçeceğiz, başlamanız için ihtiyaçınız olan her şeyi sağlayacağımızdan emin olacağız. Uygulamanıza QR kodu üretici işlevselliği eklemeyi düşünüyorsanız veya sadece nasıl yapıldığını merak ediyorsanız, doğru yerdesiniz. Hadi başlayalım.

Install QR Kod Oluşturucu Library in C

!{--0100110001001001010000100101001001000001010100100101100101011111--}


Başlamadan önce, IronQR NuGet Paketini kurmamız gerekiyor.

Install-Package IronQR

IronQR: C# QR Kütüphanesi

IronQR, .NET uygulamalarına QR kodu işlevselliği entegre etmek için bir C# QR Kodu kütüphanesidir. IronQR, Windows, Linux, macOS, iOS ve Android gibi çeşitli geliştirme ortamlarıyla uyumu garanti eden çok sayıda .NET sürümü ve proje türünü destekler, bunlar C#, VB.NET, F#, .NET Core, .NET Standard, .NET Framework ve daha fazlasını içerir.

IronQR, QR kodlarını okuma ve oluşturma yeteneği, birden fazla görüntü formatını destekleme ve yeniden boyutlandırma, stil verme ve QR kodlarına logo ekleme gibi özelleştirme seçenekleriyle öne çıkar.

IronQR'un Bazı Anahtar Özellikleri

IronQR, temel QR kodu oluşturmanın ötesinde işlevselliğini genişleterek QR koduyla ilgili bir dizi görev için tasarlanmış çeşitli özellikler sunar. Bu özellikleri inceleyelim ve örnek kodları kontrol edelim, bunları konsol uygulaması gibi herhangi bir tür .NET uygulama şablonuna ekleyebilirsiniz.

QR Kodlarını Okuyun

IronQR, QR kodlarını çözümlerken mükemmel performans gösterir ve kullanıcılara QR kodlarında yer alan bilgilere erişmenin basit bir yolunu sunar. Basit URL'lerden karmaşık gömülü bilgilere kadar QR kodlarından verileri hızla ve doğru şekilde çıkarabilirsiniz.

: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

İşlem, gerekli ad alanlarını içerecek şekilde başlar: IronQr ve IronSoftware.Drawing, resim manipülasyonlarını gerçekleştirmek için IronSoftware.Drawing ad alanından Color özel olarak belirtilerek.

QR kod okuma sürecine başlamadan önce, yazılımı lisans anahtarınızla IronQr.License.LicenseKey'i atayarak etkinleştirmek önemlidir. Daha sonra kod, bir dosyadan AnyBitmap.FromFile("QRCode.png") kullanarak QR kod görüntüsünü yüklemeye devam eder.

Görüntü yüklendikten sonra, QR kodu algılama için hazırlamak gereklidir. Bu hazırlık, görüntü için bir kap olarak hizmet eden QrImageInput nesnesi oluşturarak yapılır.

Bu özelliğin merkezi, QR kod okuma işlemini gerçekleştirmek için oluşturulan ve kullanılan QrReader sınıfında bulunur. Hazirlanan imaji analiz eden okuyucu, icindeki QR kodlarini arar. Bu işlemin sonucu, görüntü içinde tespit edilen her bir QR kodunu temsil eden QrResult nesnelerinin bir koleksiyonudur.

QR kodlarında kodlanan verilere erişmek ve bunları kullanmak için, kod foreach döngüsünü kullanarak sonuç koleksiyonu üzerinde yinelenir. Her bir QrResult nesnesi, erişilebilen ve görüntülenebilen QR kodunun değeri gibi özellikler içerir.

Özel QR Okuma Modu Seçenekleri

IronQR, farkli QR kodlarini okumak icin çeşitli modlar sunar, bu da onu farkli ihtiyaçlara uygun hale getirir.

  • Karisik Taramama Modu: Hiz ve dogrulugu dengeler, belirsiz veya kismi olarak gizli olan QR kodlari icin faydalidir.
  • Makine Ogretimi (ML) Taramama Modu: Zarar gormus veya okunmasi zor QR kodlarini okumak icin gelişmiş teknolojiyi kullanir, tespiti zor senaryolar icin idealdir.
  • Temel Tarama Modu: En basit ve en hizli yol, acik ve dolaysiz QR kodlari icin.
: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

Gelişmiş QR Kodları Okuyun

IronQR'nin gelişmiş QR kodu okuma yetenekleri, QR kodu tarama ve kod cozme icin kapsamli bir yaklasim sunar. Bu özellik seti, temel okumayi asarak daha derin bir duzeyde etkileşim ve veri çıkarma fırsatı sunar.

: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

C# uygulamanizda IronQR kutuphanesi kullanilarak bir QR Kod uretici oluşturmak icin bu adimlari dikkatle izleyin. Bu kılavuz, bir Windows form uygulaması oluşturmayı, IronQR kütüphanesini yüklemeyi, bir QR kodu oluşturacak kodu yazmayı ve çıktıyı anlamayı adım adım anlatacaktır.

Adım 1: Visual Studio'da Windows Uygulaması Oluşturun

  1. Bilgisayarinizda Visual Studio'yu başlatarak başlayin.
  2. 'Yeni Proje Oluştur' dugmesine tiklayin.
  3. Proje turu olarak Windows Forms Uygulamasi'ni secin. Dil olarak C# seçtiğinizden emin olun.

    Windows Forms Uygulaması

  4. Projenize bir isim girin ve kaydetmek icin bir konum secin. Ardından bir sonraki ekran, .NET framework'ü seçin. Ardından Oluştur düğmesine tıklayın.

    Proje Yapılandırması

Adım 2: IronQR Kütüphanesini Yükleme

Şimdi projeye IronQR kütüphanesini yüklemenin zamanı geldi. IronQR kütüphanesini farklı yöntemlerle yükleyebilirsiniz.

NuGet Paket Yöneticisini Kullanarak Yükleme

  1. Cozum Gezgini'nde projenize sag tiklayin ve NuGet Paketlerini Yonet secin.
  2. Arama kutusuna IronQR yazın ve Enter'a basın. NuGet Paketlerini Yönet
  3. Listede IronQR'yi bulun ve yanindaki Yukle dugmesine tiklayin.

    IronQR'yi Yükle

NuGet Paket Yöneticisi Konsolunu Kullanarak Yükleme

  • Araçlar > NuGet Paket Yöneticisi > Paket Yonetici Konsolu'na gidin.
    NuGet Paket Yöneticisi
  • Install-Package IronQR yazın ve Enter'a basın.
  • IronQR Yukleyin

    Adım 3: Ön Yüz Tasarlama

    QR Kod Oluşturucu

    3.1 Başlık Başlığı

    QR Kod Oluşturun

    QR Kodu Oluşturucu uygulaması başlatıldığında, kullanıcılar "QR Generator IronQR" başlıklı etkileyici bir başlık ile anında karşılaşırlar, kalın ve otoriter bir yazı tipinde ayarlanmıştır.

    3.2 Giriş Bölümü

    QR Kodu için Metin Girişi

    Kullanicilar QR kodlarina kodlamak istedikleri verileri girebilir.

    Logo Seçimi

    Logo Secin

    'Logo Secin' alani, ek bir kişiselleştirme katmani saglar. Kullanicilar QR koduna gomulecek bir logo yukleyebilir.

    Renk Yapılandırması

    Arka Plan Rengi

    Renk secim dugmeleri, kullanicilarin QR kodu paletini ozellestirmesine olanak tanir.

    3.3 Stil Parametreleri

    Stil

    Boyut Ayarları

    Kullanicilarin QR kodunun genel boyutunu belirtmesine olanak tanir.

    Kenar Boşlukları Ayarları

    Kullanicilarin QR kodunun etrafındaki boslugu belirtmesine olanak tanir.

    3.4 Çıktı Önizlemesi

    Oluşturulan QR kodunun gerçek zamanli on izlemesini sunar.

    QR Cikti

    3.5 Hareket Düğmeleri

    QR Oluştur

    QR kodu oluşturma surecini tetikler.

    C#'da QR Kodu

    QR Kodunu Kaydet

    QR kodunu kaydetmek icin bir kaydetme dialogunu acar.

    Kaydet

    Formu Sıfırla

    Tüm onceki girdileri ve secimleri temizler.

    Sifirla

    Adım 4: Arka Uç Mantığını Yazın

    4.1 Kurulum ve Başlatma

    Gerekli ad alanlarını içerir: IronQr ve 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 Lisans Anahtarı Yapılandırması

    IronQR kutuphanesi icin gecerli bir lisans anahtari uygular:

    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

    "YOUR_LICENSE_KEY"'yi gerçek lisans anahtarınızla değiştirin.

    4.3 Dizin Yönetimi

    Gerekli dizinleri kontrol eder veya oluşturur.

    :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

    QR kodlari dizininin yolu, QR_Generator sinifi yapılandıricisinda, uygulamanin başlatma yolunu 'QR Kodlari' klasor adiyla birlestiren qrCodesDirectory olarak tanimlanmistir:

    :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 Renk Seçimi

    Renk dialogu bilesenleri ve yardimci fonksiyonlar saglar.

    :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

    UpdateColor yöntemi, seçilen rengi alır ve onu onaltılık dizeyi kullanarak IronSoftware.Drawing.Color biçimine dönüştürür ve seçime bağlı olarak ya QR kodunun ön veya arka plan rengini günceller. Ayrıca, yeni renk seçimini yansıtmak için kullanıcı arayüzünü günceller:

    :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 Logoyu Ekleme

    Kullanicinin bir logo secmesine olanak tanir.

    :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 Kodu Oluşturma

    Kullanıcı girdilerine dayali QR kodlari oluşturma mantigi icerir.

    :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

    QrOptions nesnesi, QR kodunun hasara veya gizlenmeye karşı dayanıklılığını artıran hata düzeltme seviyesini tanımlar. CreateStyleOptions yöntemi, renkler, boyutlar ve logo gibi kullanıcının özel ayarlarını içeren bir QrStyleOptions nesnesi üretir. İşte yöntemin detayları:

    :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 QR Kodunu Kaydetme

    Oluşturulan QR kodunu kaydetme işlemini yonetir.

    :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 Uygulamayı Sıfırlama

    Kullanıcı girdilerini temizler ve form halini sifirlar.

    :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 Hata Yönetimi

    Kullanicilara hata mesajlarini gösterir.

    :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 Tam Kod Örneği

    Tüm yukaridaki özellikleri birleştiren tam kod, projenize baglantili örnek dosyada bulunabilir.

    :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

    Adim 5: Uygulamayi Calistirma

    Uygulama calistirildiginda, ana pencere girdi, stil, cikti ve eylemler icin bölümlerle duzenlenmis olarak gorunur. QR kodunuzu girerek, ozellestirerek, oluşturarak ve QR kodunu istediginiz gibi kaydederek, kullanıcı arayuzunu takip edin.

    Sonuç

    Sonuç olarak, bu kılavuz, C# uygulamanızda IronQR kutuphanesini kullanarak QR kodları oluşturma sürecinde size rehberlik etmiştir. Projenizi Visual Studio'da kurmaktan, IronQR kutuphanesini entegre etmeye, kullanıcı dostu bir arayüz tasarlamaya ve arka plan mantığını yazmaya kadar adımları içererek, uygulamalarınıza QR kodu işlevselliği eklemenin ne kadar kolay erişilebilir olduğunu göstermiş olduk.

    IronQR'nin yeteneklerini daha ileri kesif yapmak isteyenler icin, başlamak icin IronQR'nin ücretsiz deneme sunduğunu belirtmek gerekir. Projelerinize IronQR'yi entegre etmeye karar verirseniz, lisanslar $799'dan başlar ve profesyonel kalitede QR kod oluşturma için uygun maliyetli bir çözüm sunar.

    Sıkça Sorulan Sorular

    C#'da bir QR kodu oluşturucu uygulaması nasıl oluşturabilirim?

    C#'da bir QR kodu oluşturucu uygulaması oluşturmak için IronQR kütüphanesini kullanabilirsiniz. Visual Studio'da bir Windows Forms Uygulaması kurarak başlayın, IronQR'ı NuGet üzerinden yükleyin ve uygulamanızın ön yüzünü tasarlayın. IronQR'ın özelliklerini, renk seçimi ve logo yerleştirme gibi olanakları kullanarak QR kodu oluşturma mantığını uygulayın.

    .NET QR kodu kütüphanesi kullanmanın faydaları nelerdir?

    IronQR gibi bir .NET QR kodu kütüphanesi, QR kodlarını okuma konusunda yüksek doğruluk, QR kodu oluşturma için özelleştirme seçenekleri ve çeşitli .NET ortamları için destek gibi gelişmiş özellikler sunar. Ayrıca QR kodlarının boyutlandırılması ve stillendirilmesine olanak tanır.

    C#'da QR kodları oluştururken hatalarla nasıl başa çıkabilirim?

    C#'da QR kodu oluşturma sırasında try-catch blokları kullanarak uygun hata yönetim mekanizmaları uygulayabilirsiniz. IronQR, hata yönetimini kolaylaştırır ve QR kodu oluşturma sırasında ortaya çıkan sorunların verimli bir şekilde ele alınmasını sağlar.

    Bir QR kodu kütüphanesi kullanarak QR kodlarına logolar ekleyebilir miyim?

    Evet, IronQR kütüphanesini kullanarak QR kodlarına logolar ekleyebilirsiniz. Bu özellik, QR kodlarınızın markalaşmasını geliştirir ve tasarımınıza özel logolar dahil etmenizi sağlar.

    C# uygulamasında oluşturulan QR kodlarını nasıl kaydedebilirim?

    C# uygulamasında oluşturulan QR kodlarını, IronQR'ın depolama dizinlerini belirtme özelliğini kullanarak kaydedebilirsiniz. Bu, uygulamanız içinde oluşturulan QR kodlarını verimli bir şekilde yönetmenize ve depolamanıza olanak tanır.

    Bir QR kodu kütüphanesi için lisans anahtarını yapılandırmak için hangi adımlar gereklidir?

    IronQR için bir lisans anahtarını yapılandırmak için lisanslama kodunu uygulamanıza dahil etmeniz gerekir. Bu genellikle, satın aldığınız lisansı etkinleştirmek için IronQR tarafından sağlanan belirli kod satırlarını eklemeyi içerir.

    C# uygulamamda QR kodlarını belirli renklerle nasıl stil verebilirim?

    IronQR, QR kodlarını belirli renklerle stilize etmenizi sağlar. Uygulamanıza entegre edilen renk seçim diyalogları ile QR kodunun ön plan ve arka plan renklerini seçebilirsiniz.

    Visual Studio'da bir QR kodu kütüphanesi nasıl yüklenir?

    IronQR gibi bir QR kodu kütüphanesini Visual Studio'da yüklemek için NuGet Paket Yöneticisini kullanın. 'IronQR' arayın ve projeye eklemek için 'Yükle'ye tıklayın. Alternatif olarak, 'Install-Package IronQR' komutunu kullanarak Paket Yöneticisi Konsolu'nu kullanabilirsiniz.

    Curtis Chau
    Teknik Yazar

    Curtis Chau, Bilgisayar Bilimleri alanında lisans derecesine sahiptir (Carleton Üniversitesi) ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirme üzerine uzmanlaşmıştır. Kullanıcı dostu ve estetik açıdan hoş arayüzler tasarlamaya tutkuyla bağlı olan Curtis, modern çerç...

    Daha Fazlasını Oku
    Başlamaya Hazır mısınız?
    Nuget İndirmeler 64,787 | Sürüm: 2026.4 just released
    Still Scrolling Icon

    Hala Kaydiriyor musunuz?

    Hızlı bir kanit mi istiyorsunuz? PM > Install-Package IronQR
    bir örneği çalıştır URL'inin bir QR koduna dönüşünü izle.