Altbilgi içeriğine atla
IRONQR KULLANıMı

C#'ta QR Kod Üretici Uygulaması Nasıl Oluşturulur

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. İster bir uygulama geliştiriyor olun, ister bir web sitesi yönetiyor olun, ister bağlantıları paylaşmanın düzgün bir yolunu arıyor olun, bu kodlar son derece kullanışlı olabilir. Bu kılavuzda, IronQR kullanarak QR kodlarının nasıl verimli bir şekilde oluşturulacağını göstereceğiz, böylece ihtiyaçlarınıza uygun QR kodları oluşturabilirsiniz. Bu kütüphane, C# ile çalışan herkes için karmaşık mantıklara girmeden QR kodları oluşturmayı kolaylaştırır. Her şeye başlangıç için ihtiyaç duyduğunuz şeyleri sağlayarak sizi adım adım yönlendireceğiz. Bu işlevselliği uygulamanıza eklemek için mi, yoksa sadece nasıl yapıldığını mı merak ediyorsunuz, doğru yerdesiniz. Hadi başlayalım.

C#'ta QR Kod Oluşturucu Nasıl Oluşturulur

  1. Visual Studio'da bir Windows Forms Uygulaması oluşturun
  2. NuGet kullanarak QR Kütüphanesini kurun
  3. Form ön yüz unsurlarını tasarlayın
  4. QR oluşturma mantığını yazın
  5. Uygulamayı çalıştırın ve QR kodları oluşturmaya başlayın

IronQR: C# QR Kütüphanesi

IronQR, .NET uygulamalarına QR kodu işlevselliği entegre etmek için bir C# QR Kod kütüphanesidir. IronQR, Windows, Linux, macOS, iOS ve Android gibi çeşitli geliştirme ortamlarında uyumluluğu sağlamak için C#, VB.NET, F#, .NET Core, .NET Standard, .NET Framework gibi çok çeşitli .NET sürümlerini ve proje türlerini destekler.

IronQR, QR kodu okuma ve QR kodu oluşturma yetenekleri, birden fazla resim formatı için destek ve QR kodlarına boyutlandırma, stil ve logolar ekleme gibi özelleştirme seçenekleri dahil olmak üzere gelişmiş özelliklerle ayrılır.

IronQR'nin Bazı Ana Özellikleri

IronQR, temel QR kodu oluşturmanın ötesinde işlevselliğini genişleterek geniş bir QR koduyla ilgili görevi karşılamak için tasarlanmış bir dizi özellik sunar. Bu özellikleri değerlendirelim ve örnek kodlarını kontrol edelim; bunları herhangi bir .NET uygulama şablonu türüne, örneğin bir konsol uygulamasına entegre edebileceksiniz.

QR Kodları Oku

IronQR, QR kodlarını çözme konusunda üstünlük sağlar ve kullanıcılar için QR kodları içindeki bilgilere kolay bir şekilde erişim sağlar. Basit URL'lerden karmaşık gömülü bilgilere kadar QR kodlarından veri çıkartabilir.

using IronQr;
using IronSoftware.Drawing;
using Color = IronSoftware.Drawing.Color;

// Set the license key for IronQR
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);

// Print the value of each QR code found in the image
foreach (var result in qrResults)
{
    Console.WriteLine(result.Value);
}
using IronQr;
using IronSoftware.Drawing;
using Color = IronSoftware.Drawing.Color;

// Set the license key for IronQR
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);

// Print the value of each QR code found in the image
foreach (var result in qrResults)
{
    Console.WriteLine(result.Value);
}
Imports IronQr
Imports IronSoftware.Drawing
Imports Color = IronSoftware.Drawing.Color

' Set the license key for IronQR
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)

' Print the value of each QR code found in the image
For Each result In qrResults
	Console.WriteLine(result.Value)
Next result
$vbLabelText   $csharpLabel

Tarama için aşağıdaki QR'yi kullanıyoruz:

C#: QR Kod Üretici Uygulaması Nasıl Oluşturulur: Şekil 1 - QR Kod PNG Görüntü Dosyası

Ve bu çıktıyı aldık:

C#: QR Kod Üretici Uygulaması Nasıl Oluşturulur: Şekil 2 - QR Kod Çıkışı Oku

Süreç, gerekli namespace'leri ekleyerek başlar: IronQr ve IronSoftware.Drawing, ve görüntü manipülasyonlarını ele almak için IronSoftware.Drawing namespace'inden Color'in özel olarak kullanılmasıyla.

QR kod okuma sürecine dalmadan önce, lisans anahtarınızı IronQr.License.LicenseKey'ye atayarak yazılımı etkinleştirmeniz çok önemlidir. Kod daha sonra dosyadan QR kod görüntüsünü yüklemek için AnyBitmap.FromFile("QRCode.png") kullanıyor.

Resim yüklendiğinde, QR kodu tespiti için hazırlama adımı gelir. Bu hazırlık, görüntü için bir kap olarak hizmet veren bir QrImageInput nesnesi oluşturarak yapılır.

Bu özelliğin özü, QR kod okuma işlemi gerçekleştirmek için kullanılan QrReader sınıfında yatar. Okuyucu hazırlanan görüntüyü analiz eder, qrInput, içerdiği QR kodlarını arar. Bu işlemin sonucu, görüntüde tespit edilen her QR kodunu temsil eden QrResult nesnelerinin bir koleksiyonudur.

QR kodlarına kodlanmış verilere erişmek ve bunları kullanmak için, kod bir foreach döngüsü kullanarak sonuçların koleksiyonu üzerinde yineleniyor. Her QrResult nesnesi, erişilebilecek ve görüntülenebilecek olan QR kodunun değeri gibi özellikler içerir.

Özel QR Okuma Modu Seçenekleri

IronQR, görüntülerden QR kodlarını okumanın farklı yollarını sunar, bu da onu çeşitli ihtiyaçlar için çok yönlü hale getirir. Bir seçenek, hızı ve doğruluğu dengeleyen Karışık Tarama Modu olup, QR kodları tam net değilse veya kısmen gizliyse kullanışlıdır.

Diğeri ise, QR kodlarının zarar gördüğü veya normalde kolay okunmadığı durumlarda okuma akıllı teknolojisi kullanan Makine Öğrenimi (ML) Tarama Modudur. Bu mod, QR kodlarının tespitinin zor olduğu zorlu durumlar için harikadır.

Son olarak, en hızlı ve en basit yolu olan Temel Tarama Modu vardır; açık ve kolay anlaşılan QR kodlarını taramak için. Hızlı sonuçlar gerektiğinde ve QR kodları okunması kolay olduğunda en uygundur.

using IronQr;
using IronQr.Enum;
using IronSoftware.Drawing;
using Color = IronSoftware.Drawing.Color;

// Set the license key for IronQR
IronQr.License.LicenseKey = "License-Key";

// Load the image file that contains the QR Code
var inputImage = AnyBitmap.FromFile("QRCode.png");

// Using mixed scan mode
QrImageInput mixedScanInput = new QrImageInput(inputImage, QrScanMode.OnlyDetectionModel);
IEnumerable<QrResult> mixedScanResults = new QrReader().Read(mixedScanInput);

// Using machine learning scan mode
QrImageInput mlScanInput = new QrImageInput(inputImage, QrScanMode.OnlyDetectionModel);
IEnumerable<QrResult> mlScanResults = new QrReader().Read(mlScanInput);

// Using basic scan mode
QrImageInput basicScanInput = new QrImageInput(inputImage, QrScanMode.OnlyBasicScan);
IEnumerable<QrResult> basicScanResults = new QrReader().Read(basicScanInput);
using IronQr;
using IronQr.Enum;
using IronSoftware.Drawing;
using Color = IronSoftware.Drawing.Color;

// Set the license key for IronQR
IronQr.License.LicenseKey = "License-Key";

// Load the image file that contains the QR Code
var inputImage = AnyBitmap.FromFile("QRCode.png");

// Using mixed scan mode
QrImageInput mixedScanInput = new QrImageInput(inputImage, QrScanMode.OnlyDetectionModel);
IEnumerable<QrResult> mixedScanResults = new QrReader().Read(mixedScanInput);

// Using machine learning scan mode
QrImageInput mlScanInput = new QrImageInput(inputImage, QrScanMode.OnlyDetectionModel);
IEnumerable<QrResult> mlScanResults = new QrReader().Read(mlScanInput);

// Using basic scan mode
QrImageInput basicScanInput = new QrImageInput(inputImage, QrScanMode.OnlyBasicScan);
IEnumerable<QrResult> basicScanResults = new QrReader().Read(basicScanInput);
Imports IronQr
Imports IronQr.Enum
Imports IronSoftware.Drawing
Imports Color = IronSoftware.Drawing.Color

' Set the license key for IronQR
IronQr.License.LicenseKey = "License-Key"

' Load the image file that contains the QR Code
Dim inputImage = AnyBitmap.FromFile("QRCode.png")

' Using mixed scan mode
Dim mixedScanInput As New QrImageInput(inputImage, QrScanMode.OnlyDetectionModel)
Dim mixedScanResults As IEnumerable(Of QrResult) = (New QrReader()).Read(mixedScanInput)

' Using machine learning scan mode
Dim mlScanInput As New QrImageInput(inputImage, QrScanMode.OnlyDetectionModel)
Dim mlScanResults As IEnumerable(Of QrResult) = (New QrReader()).Read(mlScanInput)

' Using basic scan mode
Dim basicScanInput As New QrImageInput(inputImage, QrScanMode.OnlyBasicScan)
Dim basicScanResults As IEnumerable(Of QrResult) = (New QrReader()).Read(basicScanInput)
$vbLabelText   $csharpLabel

Gelişmiş QR Kodları Oku

IronQR'nin gelişmiş QR kodu okuma yetenekleri, QR kodu tarama ve çözme konusunda kapsamlı ve ayrıntılı bir yaklaşım sağlamak için tasarlanmıştır. Bu özellik seti, temel QR kodu okuma işlevselliğinin ötesine geçiyor ve daha derin bir etkileşim ve veri çıkarma düzeyi sağlıyor.

using IronQr;
using IronQr.Enum;
using IronSoftware.Drawing;
using Color = IronSoftware.Drawing.Color;

// Set the license key for IronQR
IronQr.License.LicenseKey = "License-Key";

// Load the image to scan
var imageToScan = AnyBitmap.FromFile("QRCode.png");

// Prepare the image for QR code detection
QrImageInput qrInput = new QrImageInput(imageToScan);

// Initialize the QR Code reader
QrReader qrScanner = new QrReader();

// Execute QR Code reading on the provided image
IEnumerable<QrResult> scanResults = qrScanner.Read(qrInput);

// Print the value, URL, and coordinates of each QR code found in the image
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}");
    }
}
using IronQr;
using IronQr.Enum;
using IronSoftware.Drawing;
using Color = IronSoftware.Drawing.Color;

// Set the license key for IronQR
IronQr.License.LicenseKey = "License-Key";

// Load the image to scan
var imageToScan = AnyBitmap.FromFile("QRCode.png");

// Prepare the image for QR code detection
QrImageInput qrInput = new QrImageInput(imageToScan);

// Initialize the QR Code reader
QrReader qrScanner = new QrReader();

// Execute QR Code reading on the provided image
IEnumerable<QrResult> scanResults = qrScanner.Read(qrInput);

// Print the value, URL, and coordinates of each QR code found in the image
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 IronQr.Enum
Imports IronSoftware.Drawing
Imports Color = IronSoftware.Drawing.Color

' Set the license key for IronQR
IronQr.License.LicenseKey = "License-Key"

' Load the image to scan
Dim imageToScan = AnyBitmap.FromFile("QRCode.png")

' Prepare the image for QR code detection
Dim qrInput As New QrImageInput(imageToScan)

' Initialize the QR Code reader
Dim qrScanner As New QrReader()

' Execute QR Code reading on the provided image
Dim scanResults As IEnumerable(Of QrResult) = qrScanner.Read(qrInput)

' Print the value, URL, and coordinates of each QR code found in the image
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

IronQR kullanarak QR kodunu taradığımızda çıkan sonuç:

C#: QR Kod Üretici Uygulaması Nasıl Oluşturulur: Şekil 3 - QR Kod Çıkışını Tarayın

Aşağıdaki QR Kodunu kullanıyoruz:

C#: QR Kod Üretici Uygulaması Nasıl Oluşturulur: Şekil 4 - QR Kod Girişi

Her QrResult nesnesi, kod çözülen verilere (Value), gömülü URL'lere (Url) ve görüntü içindeki QR kodunun uzaysal koordinatlarına (Points) erişim sağlar.

Tespit edilen her QR kodu için IronQR, QR kodunun içeriği ve içerdiği herhangi bir URL dahil olmak üzere ayrıntılı bilgi sunar. Ayrıca, kütüphane, görüntüdeki QR kodunun köşelerinin tam koordinatlarını (Points özelliğiyle) sağlar.

C# uygulamasında IronQR kütüphanesini kullanarak bir QR Kod üretici oluşturmak için bu adımları dikkatlice izleyin. Bu kılavuz, bir Windows formu uygulaması kurulumunu, IronQR kütüphanesinin yüklenmesini, bir QR kodu oluşturmak için kod yazmayı ve çıktıyı anlamayı gösterecektir.

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

  • Bilgisayarınızda Visual Studio'yu başlatarak başlayın.
  • 'Yeni Proje Oluştur' butonuna tıklayın.
  • Proje tipi olarak Windows Forms App seçin. Dil olarak C# seçtiğinizden emin olun.

C#: QR Kod Üretici Uygulaması Nasıl Oluşturulur: Şekil 5 - Windows Forms Uygulaması

  • Projeye bir isim girin ve kaydetmek için konumu seçin. Sonraki ekranda .NET framework seçin. Sonra Oluştur üzerine tıklayın.

C#: QR Kod Üretici Uygulaması Nasıl Oluşturulur: Şekil 6 - Proje Yapılandırması

Bu, Visual Studio'da bir Windows forms uygulaması oluşturacak ve açacaktır.

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

Şimdi projeye IronQR kütüphanesini yükleme zamanı. IronQR kütüphanesini farklı yöntemlerle yükleyebilirsiniz. Tercihinize uygun olanı seçin:

NuGet Paket Yöneticisini Kullanarak Yükleme

  • Çözüm Gezgini'nde projenizin üzerine sağ tıklayın ve NuGet Paketlerini Yönet seçeneğini seçin.
  • Arama kutusuna IronQR yazın ve Enter'a basın.

C#: QR Kod Üretici Uygulaması Nasıl Oluşturulur: Şekil 7 - NuGet Paketlerini Yönet

  • Listedeki IronQR'u bulun ve yanındaki Yükle üzerine tıklayın.

C#: QR Kod Üretici Uygulaması Nasıl Oluşturulur: Şekil 8 - IronQR Yükle

NuGet Paket Yöneticisi Konsolu Kullanarak Yükleme

  • Araçlar > NuGet Paket Yöneticisi > Paket Yöneticisi Konsolu kısmına gidin.

C#: QR Kod Üretici Uygulaması Nasıl Oluşturulur: Şekil 9 - NuGet Paket Yöneticisi

  • Install-Package IronQr yazın ve Enter'a basın.

C#: QR Kod Üretici Uygulaması Nasıl Oluşturulur: Şekil 10 - IronQR Yükle

Adım 3: Arayüz Tasarla

C#: QR Kod Üretici Uygulaması Nasıl Oluşturulur: Şekil 11 - QR Kod Üretici

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

C#: QR Kod Üretici Uygulaması Nasıl Oluşturulur: Şekil 12 - Bir QR Kod Oluştur

QR Kod Üretici uygulamasını başlattıklarında, kullanıcılar hemen 'QR Generator IronQR' başlıklı etkileyici bir başlıkla karşılaşırlar, bu başlık kalın ve otoriter bir yazı tipinde ayarlanmıştır. Temizlik ve modern çizgiler sağlayan Agency FB yazı tipi, etkinlik ve kesinlik hissi ile seçilmiştir. 48 punto büyüklüğündeki başlık hem belirgin hem de iddialı, kullanıcının dikkatini çeker ve uygulamanın kimliğini sağlam bir şekilde oluşturur.

3.2 Giriş Bölümü

QR Kod için Metin Girişi

C#: QR Kod Üretici Uygulaması Nasıl Oluşturulur: Şekil 13 - QR Kod Metin Girişi

Giriş bölümünün merkezinde basit fakat temel bir bileşen bulunur: metin giriş kutusu. Burada kullanıcılar, QR kodlarına kodlamak istedikleri verileri girebilir. Kutu, önemli miktarda metni karşılayacak kadar geniştir ve üst kısma yakın bir şekilde konumlanmıştır.

Logo Seçimi

C#: QR Kod Üretici Uygulaması Nasıl Oluşturulur: Şekil 14 - Logo Seç

Metin girişinin altında, 'Logo Seç' alanı kişiselleştirilme için ek bir katman sunar. Kullanıcılar, QR kodlarına gömülecek bir logo yükleyebilir, bu, marka tanınırlığını artırır veya kodu kişiselleştirir. Yanındaki resim kutusu, seçilen logonun ön izlemesini sunar, hemen görsel bir geri bildirim sağlar.

Renk Yapılandırması

C#: QR Kod Üretici Uygulaması Nasıl Oluşturulur: Şekil 15 - Arkaplan Rengi

Sağa doğru hareket ederken, arayüz renk seçimi seçeneklerini sunar. QR kodunun rengi için bir düğme ve arka plan rengi için diğer düğme, kullanıcıların QR kodlarının paletini özelleştirmelerine olanak tanır. Bu düğmelerin yanındaki zengin metin kutuları, şu anda seçili olan rengi gösterir.

Metin, logo ve renk seçenekleri ile giriş kısmının dikkatli düzeni, kullanıcı önceliklerinin QR kodu oluştururken net bir şekilde anlaşılmasını yansıtır. İşlevselliği esneklikle birleştirir, kullanıcılara gerekli bilgileri hızla ve verimli bir şekilde girmelerine olanak tanırken aynı zamanda yaratıcılık için alan sunar.

3.3 Stil Parametreleri

C#: QR Kod Üretici Uygulaması Nasıl Oluşturulur: Şekil 16 - Stil

Boyut Ayarları

Renk özelleştirme araçlarının yanına, kullanıcılar 'Boyutlar' girişi bulacaklar. Bu sayısal ayar, QR kodunun genel boyutunu belirlediğinden, iş kartı, afiş veya dijital ekran gibi hedeflenen görüntüleme bağlamına mükemmel bir şekilde uyum sağlamasını garanti eder.

Margin Ayarları

Boyut girişinin yanında, 'Referans Çizgileri' alanı, kullanıcıların QR kodunun çevresini saran beyaz alanı belirtmelerine olanak tanır. Referans çizgileri sadece estetik bir tercih değil; tarayıcılar tarafından QR kodunun okunabilirliğini etkileyen işlevsel bir unsurdur. Uygulama, bu parametreyi kolayca ayarlamak için kullanıcıların kullanabileceği sayısal yukarı-aşağı kontrol sağlar.

3.4 Çıktı Önizleme

C#: QR Kod Üretici Uygulaması Nasıl Oluşturulur: Şekil 17 - QR Çıkışı

Kullanıcı QR kodu üretimini başlattığında, formun sol tarafında, 'Çıktı' olarak etiketlenmiş büyük resim kutusu odak noktası haline gelir. Gerçek zamanlı bir ön izleme sağlayarak, üretilmiş QR kodunu dinamik bir ekran olarak hizmet eder. Bu anlık görsel geri bildirim, kullanıcıların tasarım tercihlerini doğrulaması ve QR kodunun, kaydetmeden önce beklentilerini karşıladığından emin olmaları için önemlidir.

3.5 Eylem Düğmeleri

QR Üret

C#: QR Kod Üretici Uygulaması Nasıl Oluşturulur: Şekil 18 - C#'da QR Kod

"QR Üret" düğmesi, uygulamanın yüzeyindeki önemli bir kontrol elemanıdır. Form içinde stratejik olarak konumlandırılan bu düğme, QR kodu oluşturma sürecinin katalizörüdür. Bu düğmeye tıklayınca, uygulama kullanıcının tanımladığı tüm giriş verilerini ve stil parametrelerini alarak özel bir QR kodunun oluşturulmasına başlar.

QR Kod Kaydet

C#: QR Kod Üretici Uygulaması Nasıl Oluşturulur: Şekil 19 - Kaydet

Bir QR kodu üretildiğinde ve çıktı ön izleme alanında gösterildiğinde, "QR Kaydet" düğmesi devreye girer. Tıklandığında bir kaydetme iletişim kutusu açarak kullanıcının istenen dosya formatını ve kaydetme konumunu seçmesine olanak tanır.

Formu Sıfırla

C#: QR Kod Üretici Uygulaması Nasıl Oluşturulur: Şekil 20 - Sıfırla

Tek bir tıklama ile, bu düğme tüm önceki girişleri ve seçimleri temizleyerek tüm ayarları varsayılan değerlere geri yükler. Her seçeneği manuel olarak ayarlamadan uygulamayı yeniden başlatmanın hızlı bir yolunu sunarak formun önemli bir yönünü oluşturur.

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

4.1 Kurulum ve Başlatma

İlk olarak, uygulama gerekli namespace'lerin dahil edilmesiyle başlar: IronQr ve IronSoftware.Drawing. Bu ad alanları, uygulama içinde QR kodları ve renklerini oluşturmak ve bunları manipüle etmek için gereken işlevsellikleri sağladıklarından, esastır. QR kod üretiminde renk yönetimini kolaylaştırmak için özel bir Color sınıfı tanımlanır, IronQR'ın gereksinimleriyle uyumluluğu sağlamak adına varsayılan System.Drawing.Color'yu değiştirir.

using IronQr;
using IronSoftware.Drawing;
using Color = IronSoftware.Drawing.Color;
using IronQr;
using IronSoftware.Drawing;
using Color = IronSoftware.Drawing.Color;
Imports IronQr
Imports IronSoftware.Drawing
Imports Color = IronSoftware.Drawing.Color
$vbLabelText   $csharpLabel

QR_Generator sınıfının yapıcı metodu, uygulamanın kullanıma hazırlanmasında kritik bir rol oynar. Windows Forms uygulamalarında, formun arayüz öğelerini kurmak ve düzenlemek için standart bir adım olan bir uygulamanın bileşenlerinin burada başlatılmasıdır.

public QR_Generator()
{
    InitializeComponent();
    SetLicenseKey();
    EnsureDirectoryExists(qrCodesDirectory);
}
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
  • SetLicenseKey: Bu yöntem, IronQR kütüphanesi için geçerli bir lisans anahtarı uygulamak için çağrılır. Ticari uygulamalar için lisans anahtarı kullanımı zorunludur ve IronQR kütüphanesinin tüm yeteneklerini açar.

  • EnsureDirectoryExists: Üretilen QR kodlarının kaydedilmesi gerektiği göz önünde bulundurularak, bu yöntem ayrılmış bir dizin olduğundan emin olur. Uygulamanın başlangıç yolunda "QR Kodlar" dizininin mevcut olup olmadığını kontrol eder ve mevcut değilse oluşturur.

4.2 Lisans Anahtarı Yapılandırması

IronQR'nin sınırsız çalışmasını sağlamak için geçerli bir lisans anahtarı uygulanmalıdır. Bu, kütüphaneyi satın aldığınız veya deneme lisans anahtarınızla yapılandırmak için tasarlanmış bir statik yöntem olan SetLicenseKey yöntemiyle gerçekleştirilir. Aşağıdaki kod örneği lisans anahtarını nasıl ayarlayacağınızı göstermektedir:

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 Iron Software'den aldığınız gerçek lisans anahtarı ile değiştirin. Yöntem, QR_Generator sınıfının yapıcı metodunda çağrılır, bu şekilde lisans, uygulama başlar başlamaz ve herhangi bir QR kod üretiminden önce uygulanır.

4.3 Dizin Yönetimi

Uygulama, QR kodlarının saklanacağı belirtilen dizinin var olup olmadığını kontrol etmek için EnsureDirectoryExists yöntemini kullanır. Eğer yoksa, dizini oluşturur. Bu yöntem, kontrol edilecek veya oluşturulacak dizinin yolu olan bir string parametresi alır. İşte bunun uygulanış şekli:

private static void EnsureDirectoryExists(string path)
{
    if (!System.IO.Directory.Exists(path))
    {
        System.IO.Directory.CreateDirectory(path);
    }
}
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

Bu yöntem, dosya sistemi ile etkileşimde bulunmak için System.IO namespace'ini kullanır. Önce, belirtilen yolda dizinin var olup olmadığını Directory.Exists kullanarak kontrol eder. Dizin yoksa (false döner), daha sonra Directory.CreateDirectory kullanarak dizini oluşturur.

QR kodları dizininin yolu, uygulamanın başlangıç yolu ile bir 'QR Kodları' klasör adını birleştiren qrCodesDirectory olarak QR_Generator sınıfının yapıcı metodunda tanımlanır:

string qrCodesDirectory = System.IO.Path.Combine(Application.StartupPath, "QR Codes");
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

Uygulama, her biri renk seçimi için bir yönteme bağlı kullanıcı arayüzünde iki buton sağlar: QR kod rengi için btn_color_Click ve arka plan rengi için btn_background_Click. Bu yöntemler, kullanıcıların renk seçmesine olanak tanımak için bir renk iletişim kutusundan yararlanır.

Renk iletişim kutusu kullanılarak bir renk seçildiğinde, seçilen renk ardından onaltılık dize biçimine dönüştürülür. Bu gereklidir çünkü IronQR kütüphanesi renklerin onaltılık formatta belirtilmesini gerektirir. Dönüştürme, ColorToHex methodu aracılığıyla yapılır:

private string ColorToHex(System.Drawing.Color color)
{
    return $"#{color.R:X2}{color.G:X2}{color.B:X2}";
}
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 methodu, seçilen rengi alır ve onu IronSoftware.Drawing.Color formatına onaltılık dize kullanarak dönüştürür, ve seçime bağlı olarak ya QR kodunun ön planını ya da arka planını günceller. Ayrıca kullanıcı arayüzü, yeni renk tercihinin yansıtılması için güncellenir:

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 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 Logo Ekleme

Uygulama, tıklandığında kullanıcıya logo olarak kullanılacak bir resim dosyası seçmesine olanak tanıyan bir dosya iletişim kutusu açan bir düğme (btn_logo_Click) içerir. Bu işlevsellik, iş veya kişisel olarak QR kodlarını markalamak isteyenler için kritiktir. İşte logo seçimi ve entegrasyon süreci yönetilmektedir:

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_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

Bir görüntü başarıyla seçildiğinde, uygulama onu yüklemeye ve bir önizleme sağlamaya çalışır. AnyBitmap nesnesi, logoBmp, daha sonra seçilen görüntü ile ayarlanır, bu da QR üretim mantığı tarafından daha sonra kullanılır.

4.6 QR Kod Üretimi

Üretim süreci, kullanıcı 'Üret' düğmesine tıkladığında başlar ve bu, btn_generate_Click methoduna bağlanmıştır. Bu yöntem, gerçek üretim mantığının bulunduğu GenerateQRCode fonksiyonunu çağırarak bir tetikleyici görevi görür.

private void btn_generate_Click(object sender, EventArgs e)
{
    GenerateQRCode();
}
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

GenerateQRCode yönteminin içinde, uygulama, girilen metin ve stil seçenekleri gibi belirlenen parametrelere dayanan bir QR kodu oluşturur. Yöntem, seçilen renkleri, boyutları, marjinleri uygulayarak bir QR kodu oluşturmasını kapsar ve isteğe bağlı olarak bir logo ekler.

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 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 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
$vbLabelText   $csharpLabel

QrOptions nesnesi, QR kodunun hasara veya örtülmeye 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 oluşturur. İşte yöntem detayları:

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 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

Bu yöntem, kullanıcının tercihlerini uygulamak için QR kod üretim mantığı tarafından daha sonra kullanılacak bir QrStyleOptions nesnesi oluşturur. Seçenekler şunları içerir:

  • BackgroundColor ve Color: Bu özellikler, QR kodunun arka plan ve ön plan renklerini ayarlayarak markalama veya estetik tercihlerle uyumlu olabilecek kişiselleştirilmiş bir görünüm sağlar.
  • Dimensions: Bu özellik, QR kodunun boyutunu belirler ve farklı bağlam veya ortamlara nasıl uyduğunu esnek bir şekilde ayarlar.
  • Margins: Bu özellik, QR kodunun etrafındaki kenar boşluğu boyutunu ayarlayarak, çevresindeki elemanlardan izole edilmesini sağlar ve bu ölçeklenebilirlik için önemli olabilir.
  • Logo: Kullanıcı bir logo eklemeyi seçmişse, burada belirli boyutlar ve köşe yarıçapı ile düzenlenir.

4.7 QR Kodunu Kaydetme

Kaydetme işlevi, btn_save_Click yöntemine bağlı olan 'Kaydet' düğmesi ile tetiklenir. Bu yöntem, kaydetme mantığını uygulayan SaveQRCode çağırır. Bu süreç, kaydedilecek QR kodu için kullanıcıya dosya formatı ve kaydedileceği konumu seçmesine olanak tanıyan bir dosya kaydetme iletişim kutusu göstermeyi içerir.

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 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

Bu yöntem bir oluşturulan QR kodunun mevcut olup olmadığını kontrol eder. Kullanıcının kaliteyi (PNG) öncelikle mi yoksa dosya boyutunu mu (JPEG) öncelikle mi seçmesine bağlı olarak, onun PNG veya JPEG formatında kaydedilmesi için seçenekler sunar. DetermineImageFormat fonksiyonu, kullanıcının seçtiği dosya uzantısına bağlı olarak görüntünün doğru formatta kaydedilmesini sağlar.

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 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

Bu esnek yapı, kullanıcıların ihtiyaçlarına en uygun olan formatı seçmelerine olanak tanır.

4.8 Uygulamayı Sıfırlama

Sıfırlama işlevi, btn_reset_Click yöntemini çağıran 'Sıfırla' butonu ile bağlıdır. Bu yöntem, sırasıyla, tüm kullanıcı girişlerini temizlemek ve metin alanları, renk seçimleri ve seçilen logo dahil olmak üzere tüm ayarlar için varsayılan değerleri geri yüklemek için tasarlanmış bir fonksiyon olan ResetFields çağırır.

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 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 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
$vbLabelText   $csharpLabel

Bu yöntem QR kodu üretimine dahil olan her bileşeni sıfırlar. Örneğin, QR kodu metnini temizler, boyutları ve marjinleri varsayılan değerlere ayarlar ve herhangi bir seçili rengi veya logoyu kaldırır.

4.9 Hata Yönetimi

Uygulama, hata mesajlarını kullanıcı dostu bir şekilde görüntülemek için ShowError yöntemini kullanır. Bu yöntem, kullanıcıya hata hakkında bağlam sağlar, iki parametre alır: bir başlık ve bir mesaj. İşte bunun uygulanış şekli:

private static void ShowError(string title, string message)
{
    MessageBox.Show($"{title}: {message}", "Error");
}
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

Bu yöntem, uygulamanın farklı bölümlerinde kullanılır ve bir hata meydana geldiğinde kullanıcının hemen net ve kısa bir mesajla bilgilendirilmesini sağlar. Örneğin, logo yüklenirken veya QR kod üretim süreci sırasında bir hata meydana gelirse, uygulama ShowError çağırarak sorun hakkında ayrıntıları gösterir.

4.10 Tam Kod Örneği

İşte kodu çok daha kolay anlamanızı sağlayacak tam kod:

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");
        }
    }
}
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

Adım 5: Uygulamayı Çalıştırın

Uygulama çalıştırıldığında, sağlanan görselde gösterildiği gibi ana pencere görünür. Düzen, giriş, stil, çıktı ve eylemler için bölümlere düzgün bir şekilde düzenlenmiştir.

C#: QR Kod Üretici Uygulaması Nasıl Oluşturulur: Şekil 21 - Uygulama Çıkışı

Süreçteki ilk adım, "Giriş QR Metni" alanına veri girmekten oluşur. Bu veriler, URL veya metinsel bilgi gibi QR kodunun içeriğini oluşturacaktır. Sonra, QR kodunu özelleştirmek için "Logo Seç" düğmesine tıklayarak bir logo seçiyoruz. Seçim yapıldıktan sonra, logo, düğme yanındaki önizleme kutusuna yerleştirilerek, QR kodu tasarımına dahil edildiğini onaylar.

C#: QR Kod Üretici Uygulaması Nasıl Oluşturulur: Şekil 22 - Logo

Logo seçiminden sonra, QR kodunun ön plan ve arka plan renklerini seçiyoruz. İlgili düğmelere tıklayıp, seçilen renkler, tercihlerimizin anında görsel teyidini veren her bir düğmenin yanındaki renk görüntüleme kutularına yansır.

C#: QR Kod Üretici Uygulaması Nasıl Oluşturulur: Şekil 23 - Renk Seçimi

Bu belirli QR kodu için, ihtiyaçlarımıza uygun bir boyutta olduğundan emin olmak amacıyla boyutları 500 olarak ayarladık ve QR kodunun etrafında bir tampon sağlamak için marjinleri 20'ye ayarladık, böylece tarama sorunlarından kaçınıyoruz.

C#: QR Kod Üretici Uygulaması Nasıl Oluşturulur: Şekil 24 - Boyutlar

Tüm girişler ve stil seçenekleri ayarlandığında, "QR Üret" düğmesine tıklayarak QR kodunu üretmeye devam ediyoruz. Uygulama girişlerimizi işler ve çıkış resim kutusunda yeni oluşturulmuş QR kodunu gösterir.

C#: QR Kod Üretici Uygulaması Nasıl Oluşturulur: Şekil 25 - QR Kod Çıkışlarını Okuma

Oluşturulan QR kodunu kaydetmek için, basitçe "QR Kaydet" düğmesine tıklıyoruz. Bu işlem bir kaydetme iletişim kutusu açarak, QR kodu görüntüsü için konumu ve dosya formatını seçmemize olanak tanır.

C#: QR Kod Üretici Uygulaması Nasıl Oluşturulur: Şekil 26 - Kaydetme Diyaloğu

Kaydettikten sonra, QR kodunun başarıyla saklandığını onaylayan bir başarı mesajı hazır.

C#: QR Kod Üretici Uygulaması Nasıl Oluşturulur: Şekil 27 - Başarı Mesajı

Baştan başlamak veya yeni bir QR kodu oluşturmak istersek, "Formu Sıfırla" düğmesine tıklayarak, tüm alanları ve seçimleri temizleyerek, bir sonraki QR kodu üretimine hazır olacak şekilde formu orijinal haline döndürür.

C#: QR Kod Üretici Uygulaması Nasıl Oluşturulur: Şekil 28 - Formu Sıfırla

İşte IronQR tarafından üretilen kaydedilmiş QR kodu:

C#: QR Kod Üretici Uygulaması Nasıl Oluşturulur: Şekil 29 - QR Kod Çıkışı

Sonuç

Sonuç olarak, bu kılavuz, C# uygulamasında IronQR kütüphanesini kullanarak QR kodları oluşturma sürecinde size rehberlik etti. Projenizi Visual Studio'da kurmaktan, IronQR kütüphanesini entegre etmeye, kullanıcı dostu bir arayüz tasarlamaktan ve arka uç mantığını yazmaya kadar adımları bölerek, uygulamalarınıza QR kodu işlevi eklemenin ne kadar erişilebilir olduğunu gösterdik.

IronQR'nin sunduğu özellikleri daha fazla keşfetmekle ilgilenenler için, IronQR'nin başlamanıza yardımcı olacak bir ücretsiz deneme sunduğunu belirtmekte fayda var. IronQR'yi projelerinize entegre etmeyi düşünüyorsanız, lisanslar $999'dan başlamaktadır ve profesyonel düzeyde QR kod üretimi için uygun maliyetli bir çözüm sunmaktadır.

Sıkça Sorulan Sorular

C#'ta bir QR Kod oluşturucu uygulaması nasıl oluşturulur?

C#'ta bir QR Kod oluşturucu uygulaması oluşturmak için, Visual Studio'da bir Windows Forms Uygulaması kurarak başlayın. IronQR kütüphanesini NuGet üzerinden yükleyin, metin, logo ve renk için giriş alanları olan arayüzü tasarlayın ve ardından IronQR yöntemlerini kullanarak QR kod oluşturma mantığını uygulayın.

C#'ta QR kodları için mevcut özelleştirme seçenekleri nelerdir?

IronQR, QR kodları için renkleri, boyutları ve kenar boşluklarını değiştirme gibi özelleştirme seçenekleri sunar. Ayrıca, QrStyleOptions nesnesinde ayarları değiştirerek QR kodlarına logolar ekleyebilirsiniz.

C# projesine bir QR Kod kütüphanesini nasıl yüklerim?

Visual Studio'daki NuGet Paket Yöneticisi kullanarak C# projenize IronQR kütüphanesini yükleyin. IronQR'ı arayın ve projenize eklemek için 'Yükle' düğmesini tıklayın.

C#'ta oluşturulan QR kodlarını hangi formatlarda kaydedebilirim?

IronQR ile oluşturulan QR kodlarını PNG ve JPEG dahil olmak üzere çeşitli formatlarda kaydedebilirsiniz, böylece kalite ve dosya boyutu bakımından esneklik sağlar.

C# kütüphanesi kullanarak QR kodları okuyabilir miyim?

Evet, IronQR, QR kodlarını okumak için işlevsellik içerir, böylece QR görüntülerinden verileri etkili bir şekilde çözebilir ve çıkarabilirsiniz.

Bir C# QR Kod kütüphanesi kullanmanın faydaları nelerdir?

IronQR gibi bir C# QR Kod kütüphanesi, çok format destek, özelleştirme seçenekleri ve çeşitli .NET sürümleriyle uyumluluk gibi özellikler sunarak QR kodları oluşturma ve okuma sürecini basitleştirir.

C#'ta QR kodları oluştururken hatalar nasıl yönetilir?

C#'ta try-catch blokları kullanarak QR kod oluşturma uygulamanıza hata yönetimini entegre edebilirsiniz. Bu, QR kod oluşturma sırasında ortaya çıkabilecek herhangi bir sorunun sorunsuz bir şekilde yönetilmesini ve kullanıcı dostu geri bildirim sağlanmasını sağlar.

Bir C# uygulamasında bir QR Kod kütüphanesini kullanmak için lisansa ihtiyacım var mı?

Evet, IronQR'ı sınırlama olmadan kullanabilmek için geçerli bir lisans anahtarına ihtiyacınız olacak. Başlangıç testi için bir deneme sürümü mevcuttur ve tam erişim için profesyonel lisanslar satın alınabilir.

C# ile QR kodlarını nasıl logolarla entegre edebilirim?

IronQR ile QR kodlarına logoları entegre edebilirsiniz, QrStyleOptions nesnesinde logo görüntüsünü ayarlayarak QR kodlarını markalama unsurları ile kişiselleştirmenize olanak tanırsınız.

C#'ta bir QR kod oluşturma uygulamasını nasıl çalıştırabilirim?

C#'taki QR kod oluşturucu uygulamanızı kurup özelleştirdikten sonra, Visual Studio'da uygulamayı çalıştırın, QR kodlarını oluşturun ve bunları istediğiniz formatta kaydetmek için sağlanan seçenekleri kullanın.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapı...

Daha Fazla Oku

Iron Destek Ekibi

Haftada 5 gün, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara