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
- Visual Studio'da bir Windows Forms Uygulaması oluşturun
- NuGet kullanarak QR Kütüphanesini yükleyin
- Form ön yüz öğelerini tasarlayın
- QR oluşturma mantığını yazın
- 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
Tarama için aşağıdaki QR'ı kullanıyoruz:

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

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)
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
IronQR kullanarak QR kodunu taradığımızda bu sonucu alıyoruz:

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

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.

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

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.

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

NuGet Paket Yöneticisi Konsolunu Kullanarak Yükleme
- Araçlar > NuGet Paket Yöneticisi > Paket Yöneticisi Konsolu seçeneklerine gidin.

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

Adım 3: Ön Yüz Tasarlama

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

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

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

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ı

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

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

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

'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

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

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
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
-
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
"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
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")
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
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
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
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
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
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
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:
BackgroundColorveColor: 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
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
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
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
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
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.

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.

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.

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.

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.

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.

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

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.

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

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.




