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. 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ı verimli bir şekilde nasıl oluşturacağınızı göstererek, ihtiyaçlarınıza uygun QR kodları oluşturmanızı sağlıyoruz. 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.

C# ile QR Kod Üretici Nasıl Oluşturulur

  1. Visual Studio'da bir Windows Forms Uygulaması oluşturun
  2. NuGet kullanarak QR Kütüphanesini yükleyin
  3. Form ön yüz öğelerini 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 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 konsol uygulaması gibi herhangi bir tür .NET uygulama şablonuna entegre edebileceğiniz örnek kodları kontrol edelim.

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.

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'ı kullanıyoruz:

C# Dilinde Bir QR Kod Üreteci Uygulaması Nasıl Oluşturulur: Şekil 1 - QR Kod PNG Resim Dosyası

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

C# Dilinde Bir QR Kod Üreteci Uygulaması Nasıl Oluşturulur: Şekil 2 - QR Kod Çıktısını Oku

Bu süreç, gerekli ad alanlarını dahil ederek IronQr ve IronSoftware.Drawing ile başlar ve resim manipülasyonlarını ele almak için Color ad alanından belirli bir IronSoftware.Drawing bahsi içerir.

QR kod okuma işlemine girmeden önce, lisans anahtarınızı IronQr.License.LicenseKey'ya atayarak yazılımı etkinleştirmeniz önemlidir. Kod, daha sonra AnyBitmap.FromFile("QRCode.png") kullanarak dosyadan QR kod resmini yüklemeye devam eder.

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

Bu özelliğin çekirdeği, QR kod okuma işlemini gerçekleştirmek için başlatılan ve kullanılan QrReader sınıfında yatmaktadır. Okuyucu, içerdiği herhangi bir QR kodunu arayarak hazırlanmış resmi qrInput analiz eder. Bu işlemin sonucu, resimdeki tespit edilen her bir QR kodunu temsil eden QrResult nesnelerinin bir koleksiyonudur.

QR kodlarındaki kodlanmış verilere erişmek ve kullanmak için, kod foreach döngüsünü kullanarak sonuç koleksiyonu üzerinde iterasyon yapar. Her bir QrResult nesnesi, QR kodunun değeri gibi erişilebilen ve gösterilebilen özellikleri içerir.

Özel QR Okuma Modu Seçenekleri

IronQR, çeşitli ihtiyaçlara uygun hale getiren, görüntülerden QR kodlarını okumak için farklı yollar sunar. Bir seçenek, QR kodlarının net olmadığı veya kısmen gizlendiği durumlarda hız ve doğruluk arasında denge kuran Karışık Tarama Modu'dur.

Başka bir seçenek, bozuk veya normalde okunması zor olan QR kodlarını okumak için akıllı teknolojiyi kullanan Makine Öğrenimi (ML) Tarama Modu'dur. QR kodlarının tespit edilmesinin zor olduğu zorlu durumlar için bu mod harikadır.

Son olarak, en net ve en basit QR kodlarını hızlı taramak için hızlı ve basit bir yol olan Temel Tarama Modu vardır. Hızlı sonuç gerektiğinde ve QR kodları okunması kolay olduğunda en iyisidir.

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

IronQR'un gelişmiş QR kodu okuma yetenekleri, QR kodu tarama ve çözümlemeye kapsamlı ve nüanslı bir yaklaşım sunacak şekilde tasarlanmıştır. Bu özellik seti, temel QR kodu okuma işlevselliklerinin ötesine geçerek, daha derin bir etkileşim ve veri çıkarma sağlar.

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 bu sonucu alıyoruz:

C# Dilinde Bir QR Kod Üreteci Uygulaması Nasıl Oluşturulur: Şekil 3 - QR Kod Çıktısını Tara

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

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

Her bir QrResult nesnesi, kod çözülmüş verilere (Value), herhangi bir gömülü URL'ye (Url) ve resimdeki QR kodunun uzaysal koordinatlarına (Points) erişim sağlar.

Tespit edilen her QR kodu için, IronQR ayrıntılı bilgiler sunar, QR kodu içinde yer alan içerik ve URL'ler dahil. Ayrıca, kütüphane, QR kodunun resimdeki köşelerinin kesin koordinatlarını (Points özelliği aracılığıyla) sağlar.

IronQR kütüphanesini kullanarak bir C# uygulamasıyla QR Kodu oluşturucu oluşturmak için bu adımları dikkatlice 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

  • Bilgisayarınızda Visual Studio'yu başlatarak başlayın.
  • "Yeni Proje Oluştur" düğmesine tıklayın.
  • Proje türü olarak Windows Forms Uygulaması seçin. Dil olarak C# seçtiğinizden emin olun.

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

  • Projeniz için bir isim girin ve kaydetmek için yeri seçin. Ardından bir sonraki ekran, .NET framework'ü seçin. Ardından Oluştur düğmesine tıklayın.

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

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

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. Tercihinize uygun olanı seçin:

NuGet Paket Yöneticisini Kullanarak Yükleme

  • Çözüm Gezgini'ndeki projenize sağ tıklayın ve NuGet Paketlerini Yöneti seçin.
  • Arama kutusuna IronQR yazın ve Enter tuşuna basın.

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

  • Listeden IronQR bulun ve yanındaki Yükle'yi tıklayın.

    C# Dilinde Bir QR Kod Üreteci Uygulaması Nasıl Oluşturulur: Şekil 8 - IronQR'yi Kur

NuGet Paket Yöneticisi Konsolunu Kullanarak Yükleme

  • Araçlar > NuGet Paket Yöneticisi > Paket Yöneticisi Konsolu seçeneklerine gidin.

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

  • Install-Package IronQR yazın ve Enter tuşuna basın.

C# Dilinde Bir QR Kod Üreteci Uygulaması Nasıl Oluşturulur: Şekil 10 - IronQR'yi Kur

Adım 3: Ön Yüz Tasarlama

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

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

C# Dilinde Bir QR Kod Üreteci Uygulaması Nasıl Oluşturulur: Şekil 12 - QR Kod Üret

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. Yazı tipi, verimlilik ve hassasiyet duygusu veren temiz, modern çizgilere sahip olduğu için Agency FB olarak seçildi. 48 noktalık büyük bir yazı boyutunda, başlık hem belirgin hem de iddialıdır, kullanıcının dikkatini çeker ve uygulamanın kimliğini sağlam bir şekilde oluşturur.

3.2 Giriş Bölümü

QR Kodu için Metin Girişi

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

Giriş bölümünün merkezinde basit ama temel bir bileşen yer alır: metin giriş kutusu. Burada kullanıcılar, QR kodlarına şifrelemek istedikleri verileri girebilir. Kutu geniştir, önemli miktarda metni alabilir ve üst kısmına yakın belirgin bir konumda yer alır.

Logo Seçimi

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

Metin girdisinin altında, 'Logo Seç' alanı ek bir özelleştirme katmanı sağlar. Kullanıcılar, QR koduna gömülecek bir logo yükleyebilir, marka tanınırlığını artırabilir veya kodu kişiselleştirebilir. Yanındaki resim kutusu, seçilen logonun önizlemesini sağlar ve anında görsel geri bildirim sunar.

Renk Yapılandırması

C# Dilinde Bir QR Kod Üreteci Uygulaması Nasıl Oluşturulur: Şekil 15 - Arka Plan Rengi

Sağa doğru hareket ettiğimizde, arayüz renk seçimi için seçenekler sunar. Biri QR kodunun rengi, diğeri arka plan rengi için olmak üzere iki 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çenekleriyle donatılmış giriş bölümünün düşünceli yerleşimi, bir QR kodu oluştururken kullanıcı önceliklerinin net bir şekilde anlaşıldığını yansıtır. Fonksiyonelliği esneklikle birleştirir, kullanıcıların gerekli bilgileri hızlı ve verimli bir şekilde girmelerine olanak sağlarken aynı zamanda yaratıcılığa da alan sunar.

3.3 Stil Parametreleri

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

Boyut Ayarları

Renk özelleştirme araçlarının yanında, kullanıcılar 'Boyutlar' girişi bulur. Bu sayısal ayar kritiktir çünkü QR kodunun genel boyutunu belirler ve bir kartvizit, bir broşür veya dijital bir ekran gibi hedeflenen gösterim bağlamına mükemmel uyum sağlamasını sağlar.

Kenar Boşlukları Ayarları

Boyut girişinin yanında, 'Kenar Boşlukları' alanı, kullanıcıların QR kodunun etrafındaki beyaz boşluğu belirtmelerine olanak tanır. Kenar boşlukları sadece estetik bir tercih değildir; tarayıcılar tarafından QR kodunun okunabilirliğini etkileyebilecek işlevsel bir öğedir. Uygulama, kullanıcıların bu parametreyi kolayca ayarlamaları için bir sayısal yukarı-aşağı kontrolü sunar.

3.4 Çıktı Önizlemesi

C# Dilinde Bir QR Kod Üreteci Uygulaması Nasıl Oluşturulur: Şekil 17 - QR Çıktısı

Kullanıcı QR kodu üretimini başlattığında, formun sol tarafında 'Çıktı' olarak adlandırılan büyük resim kutusu odak noktası haline gelir. Bu, oluşturulan QR kodunun gerçek zamanlı bir önizlemesini sağlayan dinamik bir görüntüleme işlevi görür. Bu anında görsel geri bildirim, kullanıcıların tasarım seçimlerini doğrulamaları ve QR kodunun beklenen sonuçları karşılamasını sağlamaları için esastır.

3.5 Hareket Düğmeleri

QR Oluştur

C# Dilinde Bir QR Kod Üreteci Uygulaması Nasıl Oluşturulur: Şekil 18 - C# Dilinde QR Kod

'QR Oluştur' düğmesi, uygulamanın arayüzünde kılavuz bir kontrol elemanıdır. Formun içinde stratejik olarak konumlanmış olan bu düğme, QR kodu oluşturma sürecinin katalizörüdür. Bu düğmeye tıklandığında, uygulama kullanıcının tanımladığı tüm giriş verilerini ve stil parametrelerini alır ve özel bir QR kodu oluşturmaya başlar.

QR Kodunu Kaydet

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

Bir QR kodu oluşturulup çıktı önizleme alanında görüntülendiğinde, 'QR Kaydet' düğmesi devreye girer. Tıklandığında, istenilen dosya formatını ve kayıt yerini seçmeye olanak tanıyan bir kayıt diyaloğu açar.

Formu Sıfırla

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

Tek bir tıklama ile bu düğme önceki tüm girişleri ve seçimleri temizler, tüm ayarları varsayılan değerlerine geri yükler. Bu, formun önemli bir yönüdür ve uygulamayı her seçeneği elle ayarlamadan yeniden başlatmanın hızlı bir yolunu sunar.

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

4.1 Kurulum ve Başlatma

Öncelikle, uygulama gerekli ad alanlarının dahil edilmesiyle başlar: IronQr ve IronSoftware.Drawing. Bu ad alanları, uygulama içindeki QR kodlarını ve renkleri üretme ve manipüle etme için gereken işlevsellikleri sağladığından gereklidir. Özelleştirilmiş Color sınıfı, IronQR'in gereksinimlerine uygunluğu sağlamak için varsayılan System.Drawing.Color'yı geçersiz kılan, QR kod oluşturma sürecinde renk yönetimini kolaylaştırmak için tanımlanır.

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ısı, uygulamanın kullanım için hazırlanmasında önemli bir rol oynar. Uygulamanın bileşenlerinin başlatıldığı yer burasıdır, bu Windows Forms uygulamalarında formun kullanıcı arayüzü bileşenlerini ayarlamak için standart bir adımdı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ını uygulamak adına çağrılır. Lisans anahtarı kullanımı ticari uygulamalar için zorunludur ve IronQR kutuphanesinin tüm yeteneklerini açmak içindir.

  • EnsureDirectoryExists: Üretilen QR kodlarının kaydedilmesi gerektiğinden dolayı, bu yöntem özel bir dizin mevcut olduğundan emin olur. Bu, uygulamanın başlangıç yolunda 'QR Kodları' dizininin olup olmadığını kontrol eder ve yoksa oluşturur.

4.2 Lisans Anahtarı Yapılandırması

IronQR'nin sınırlama olmaksızın çalışmasını sağlamak için geçerli bir lisans anahtarı uygulanmalıdır. Bu, satın aldığınız veya deneme lisans anahtarınızla kütüphaneyi yapılandırmak üzere tasarlanmış statik bir yöntem olan SetLicenseKey yöntemi aracılığıyla gerçekleştirilir. Aşağıdaki kod parçası, lisans anahtarının nasıl ayarlanacağını 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"'u 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ısında çağrılır ve uygulama başlar başlamaz ve herhangi bir QR kod oluşturma gerçekleştirilmeden önce lisansın uygulanmasını sağlar.

4.3 Dizin Yönetimi

Uygulama, QR kodlarını depolamak için belirtilen dizinin var olup olmadığını kontrol etmek için EnsureDirectoryExists yöntemini kullanır. Eğer yoksa, dizin oluşturulur. Bu yöntem, kontrol edilecek veya oluşturulacak dizin yolunu temsil eden bir string parametresi alır. İşte uygulanışı:

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 sistemiyle etkileşim kurmak için System.IO ad alanını kullanır. Directory.Exists kullanarak belirtilen yoldaki dizinin mevcut olup olmadığını önce kontrol eder. Dizin mevcut değilse (false döndürülür), ardından 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 yapıcısında 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, kullanıcı arayüzünde renkler seçmek için iki buton sunar, bunların her biri bir yönteme bağlıdır: QR kodu rengi için btn_color_Click ve arka plan rengi için btn_background_Click. Bu yöntemler, kullanıcıya renk seçme imkanı sağlamak için bir renk diyalog kutusu kullanır.

Bir renk, renk diyalog kutusu kullanılarak seçildiğinde, seçilen renk sonrasında onaltılık dize biçimine dönüştürülür. Bu gereklidir çünkü IronQR kutuphanesi, renklerin onaltılık biçimde belirtilmesini gerektirir. Dönüştürme, ColorToHex yöntemi 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 yöntemi, seçilen rengi alır ve altılı karakter dizisi kullanarak IronSoftware.Drawing.Color formatına dönüştürür ve seçimlere bağlı olarak ya QR kodunun ön planını ya da arka plan rengini günceller. Ayrıca, yeni renk seçimini yansıtmak için kullanıcı arayüzünü günceller:

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

Uygulamada, tıklandığında kullanıcıya logo olarak kullanılacak bir görüntü dosyasını seçme imkanı veren bir dosya diyalogu açan bir buton (btn_logo_Click) bulunmaktadır. Bu işlevsellik, QR kodlarını markalamak isteyen işletmeler veya bireyler için kritiktir. İşte logo seçim ve entegrasyon sürecinin nasıl ele alındığı:

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

Görüntüyü başarıyla seçtikten sonra, uygulama onu yüklemeye ve bir önizleme göstermeye çalışır. QR oluşturma mantığının daha sonra kullandığı seçilen resimle ayarlanmış AnyBitmap nesnesi, logoBmp olarak tanımlanır.

4.6 QR Kodu Oluşturma

Oluşturma süreci, kullanıcı "Oluştur" düğmesine tıkladığında, btn_generate_Click yöntemine bağlı olarak başlar. Bu yöntem, GenerateQRCode fonksiyonunu çağırarak, gerçek oluşturma mantığının bulunduğu bir tetikleyici olarak hareket eder.

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öntemi içinde, uygulama, giriş metni ve stil seçenekleri de dahil olmak üzere belirtilen parametrelere dayalı bir QR kodu oluşturur. Yöntem, seçilen renkleri, boyutları, kenar boşluklarını ve isteğe bağlı olarak bir logoyu uygulayarak bir QR kodu oluşturmayı kapsar.

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 hata düzeltme seviyesini tanımlayarak QR kodunun hasar veya gizlenmeye karşı dayanıklılığını artırır. CreateStyleOptions yöntemi, kullanıcının renkler, boyutlar ve logo gibi özel ayarlarını içeren bir QrStyleOptions nesnesi oluşturur. İşte yöntemin 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ı tercihlerini uygulamak için QR kod oluşturma mantığı tarafından kullanılan 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 tercihlere uyacak şekilde kişiselleştirilmiş bir görünüm sağlar.
  • Dimensions: Bu özellik, QR kodunun boyutunu belirleyerek, QR kodunun farklı bağlamlara veya medyaya nasıl uyduğuna esneklik sağlar.
  • Margins: Bu özellik, QR kodunun etrafındaki kenar boşluğu boyutunu ayarlar ve bu, ölçeklenebilirlik için kritik olabilecek çevresindeki öğelerden yalıtılmasını sağlar.
  • Logo: Kullanıcı logoyu dahil etmeyi seçmişse, burada belirli boyutlar ve köşe yarıçapı ile yapılandırılır, bu da cilalı bir görünüm sağlar.

4.7 QR Kodunu Kaydetme

Kaydetme işlevi, btn_save_Click yöntemine bağlı olan "Kaydet" düğmesi tarafından tetiklenir. Bu yöntem, kaydetme mantığını uygulayan SaveQRCode'yı çağırır. Süreç, kullanıcıya QR kodunu kaydetmesi için dosya formatını ve konumunu seçme imkanı sunan bir dosya kaydetme diyalogu gösterir.

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, oluşturulmuş bir QR kodunun mevcut olup olmadığını kontrol eder. Eğer varsa, kullanıcıya dosyayı PNG veya JPEG formatında kaydetme seçeneklerini sunar. DetermineImageFormat işlevi, resmin kullanıcı tarafından seçilen dosya uzantısına göre 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 esneklik, kullanıcıların ihtiyaçlarına en uygun formatı seçmelerine olanak tanır, ister kaliteyi (PNG) ister dosya boyutunu (JPEG) önceliklendirsinler.

4.8 Uygulamayı Sıfırlama

Sıfırlama işlevi, btn_reset_Click yöntemini çağıran bir "Sıfırla" düğmesine bağlıdır. Bu yöntem, sırayla, metin alanları, renk seçimleri ve seçilen logo dahil tüm kullanıcı girişlerini temizlemek ve tüm ayarlar için varsayılan değerleri geri yüklemek için tasarlanmış bir fonksiyon olan ResetFields'yi ç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 üretiminde yer alan her bileşeni sıfırlar. Örneğin, QR kodu metnini temizler, boyutları ve kenar boşluklarını 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ılara hata hakkında bağlam sağlamak için bir başlık ve mesaj olmak üzere iki parametre alır. İşte uygulanışı:

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, bir hata oluştuğunda kullanıcıya hızlı bir şekilde net ve özlü bir mesajla bilgi verilmesini sağlamak için uygulamanın farklı bölümlerinde kullanılır. Örneğin, logo yüklenirken veya QR kod oluşturma işlemi sırasında bir hata meydana gelirse, uygulama, sorun hakkında detayları görüntülemek için ShowError'yi çağırır.

4.10 Tam Kod Örneği

İşte kodu çok daha kolay anlamanıza yardımcı olacak 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

Adim 5: Uygulamayi Calistirma

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

C# Dilinde Bir QR Kod Üreteci Uygulaması Nasıl Oluşturulur: Şekil 21 - Uygulama Çıktısı

Sürecin ilk adımı, 'Giriş QR Metni' alanına veri girmeyi içerir. Bu veri, URL veya metin bilgisi gibi QR kodunun içeriğini oluşturacak. Bir sonraki adım, QR kodunu kişiselleştirmek için 'Logo Seç' butonuna tıklayarak bir logo seçmek. Seçim yapıldıktan sonra, logo butonun yanında yer alan önizleme kutusunda görünür, QR kodu tasarımına dahil edildiğini teyit eder.

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

Logo seçiminden sonra, QR kodunun ön plan ve arka plan renklerini seçiyoruz. İlgili butonlara tıklamanın ardından, seçilen renkler her bir butonun yanındaki renk gösterim kutularında yansıtılır, böylece seçimlerimizin görsel doğrulamasını hemen alırız.

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

Bu özel QR kodu için boyutları 500 olarak ayarlıyoruz, bu da kodun ihtiyaçlarımıza uygun bir boyutta olmasını sağlıyor ve tarama sorunlarını önlemek için QR kodunun etrafında bir tampon sağlayan kenar boşluklarını 20'ye ayarladık.

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

Tüm girişler ve stil seçenekleri ayarlandığında, 'QR Oluştur' butonuna tıklayarak QR kodu üretmeye devam ediyoruz. Uygulama, girişlerimizi işler ve yeni oluşturulan QR kodunu çıktı resim kutusuna yerleştirir.

C# Dilinde Bir QR Kod Üreteci Uygulaması Nasıl Oluşturulur: Şekil 25 - QR Kodları Çıktısını Okuma

Oluşturulan QR kodunu kaydetmek için basitçe 'QR Kaydet' butonuna tıklıyoruz. Bu işlem bir kaydetme diyalogu açar, QR kodu görüntümüz için hedef ve dosya formatını seçmemizi sağlar.

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

Kaydedildikten sonra, bir başarı mesajı QR kodunun başarıyla depolandığını doğrular.

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

Eğer baştan başlamak veya yeni bir QR kodu oluşturmak istersek, 'Formu Sıfırla' butonuna tıklamak, formu orijinal durumuna döndürür, tüm alanları ve seçenekleri temizler, bir sonraki QR kodu oluşturulmasına hazır hale getirir.

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

İşte IronQR tarafından oluşturulan kaydedilmiş QR kodu:

C# Dilinde Bir QR Kod Üreteci Uygulaması Nasıl Oluşturulur: Şekil 29 - QR Kod Çıktısı

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 özelliklerini daha fazla keşfetmek isteyenler için, IronQR başlamak için bir ücretsiz deneme sunmaktadır. IronQR'yi projelerinize entegre etmeye karar verirseniz, lisanslar $799'da başlar ve profesyonel seviyede QR kodu oluşturma için uygun maliyetli bir çözüm sunar.

Sıkça Sorulan Sorular

C#'de bir QR Kod üretici uygulaması nasıl oluştururum?

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

C#'de QR kodları için hangi özelleştirme seçenekleri mevcuttur?

IronQR, QR kodları için renkleri, boyutları ve kenarları değiştirme gibi özelleştirme seçenekleri sunar. Ayrıca, QrStyleOptions nesnesindeki ayarları ayarlayarak QR kodlara logolar ekleyebilirsiniz.

C# projesinde bir QR Kod kütüphanesini nasıl kurarım?

Visual Studio'daki NuGet Paket Yöneticisi'ni kullanarak C# projenizde IronQR kütüphanesini kurun. IronQR'u arayın ve projeye eklemek için 'Install' butonuna tıklayın.

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

IronQR ile, oluşturulan QR kodlarını PNG ve JPEG dahil olmak üzere çeşitli formatlarda kaydedebilir, kalite ve dosya boyutu açısından esneklik sağlayabilirsiniz.

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

Evet, IronQR QR kodlarını okuma işlevselliği içerir ve QR resimlerinden verileri etkili bir şekilde ayıklayıp çözmenizi sağlar.

C# QR Kodu kütüphanesi kullanmanin faydalari nelerdir?

IronQR gibi bir C# QR Kodu kütüphanesi, QR kodlarini oluşturmanin ve okumanin süreçini basitlestirir, çok formatli destek, özellestirme seçenekleri ve çeşitli .NET sürümleri ile uyumluluk gibi özellikler sunar.

C#'da QR kodlari oluştururken hatalari nasil yönetebilirim?

Hata yönetimi, C#'da try-catch bloklarini kullanarak QR kodu oluşturma uygulamaniza dahil edilebilir. Bu, QR kodu oluşturma sirasinda yasanabilecek sorunlarin duzenli bir şekilde yönetilmesini ve kullanici dostu geri bildirim saglanmasini garanti eder.

Bir C# uygulamasinda bir QR Kod kütüphanesi kullanmak için lisans gerekli mi?

Evet, IronQR'u sinirsiz kullanabilmek için gecerli bir lisans anahtarina ihtiyaçiniz olacak. Ilk testler için bir deneme sürümu mevcuttur ve tam erişim için profesyonel lisanslar satın alinabilir.

C# kullanarak QR kodlarina logolari nasil entegre edebilirim?

IronQR ile QrStyleOptions nesnesinde logo görüntüsunu ayarlayarak QR kodlarina logolari entegre edebilirsiniz. Bu, QR kodlarini marka unsurlariyla kisilestirmenize olanak tanir.

C#'da bir QR kodu oluşturucu uygulamasi calistirmak için adimlar nelerdir?

C#'da QR kodu oluşturucu uygulamanizi kurduktan ve özellestirdikten sonra, uygulamayi Visual Studio'da calistirin, QR kodlarini oluşturun ve saglanan seçenekleri kullanarak bunlari istediginiz formatta kaydedin.

Jordi Bardia
Yazılım Mühendisi
Jordi Python, C# ve C++ konularında en yetkin, Iron Software'deki yeteneklerini kullanmadığı zamanlarda; oyun programlıyor. Ürün testi, ürün geliştirme ve araştırma sorumluluklarını paylaşan Jordi, sürekli ürün gelişimine büyük değer katıyor. Çeşitli deneyimleri onu ...
Daha Fazlasını Oku

Iron Destek Ekibi

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