ライブ環境でテストする
ウォーターマークなしで本番環境でテストしてください。
必要な場所でいつでも動作します。
を作成するためのガイドへようこそ。QRコードC#(シーシャープ)使用! QRコードと.NETバーコードDLLは、情報を迅速かつ効率的に共有するための一般的な方法となっています。 アプリを開発するにしても、ウェブサイトを管理するにしても、あるいは単にリンクを共有するすてきな方法を探しているにしても、これらのコードは驚くほど便利だ。 このガイドでは、QRコードを効率的に生成する方法を示します。IronQRお客様のニーズに合わせてQRコードを作成することができます。 このライブラリを使えば、C#(シーシャープ)を使っている人なら誰でも、複雑なロジックに触れることなく、簡単にQRコードを作成することができます。 必要なものがすべて揃っていることを確認しながら、順を追ってご説明します。 あなたのアプリにQRコードジェネレーター機能を追加しようとしている方も、QRコードジェネレーターがどのように作られるのか興味がある方も、このサイトをご覧ください。 さあ、始めましょう。
Visual StudioでWindowsフォームアプリケーションを作成する
NuGetを使用してQRライブラリをインストールする
フォームのフロントエンド要素をデザインする
IronQRは、.NETアプリケーションにQRコード機能を統合するためのC# QRコードライブラリです。 IronQRは、C#、VB.NET、F#、.NETコア、.NETスタンダード、.NETフレームワークなど、幅広い.NETバージョンとプロジェクトタイプをサポートし、Windows、Linux、macOS、iOS、Androidなど様々な開発環境との互換性を保証します。
IronQRは、以下のような高度な機能で差別化を図っている。QRコードを読む以下のコンテンツを日本語に翻訳してください:QRコードを生成するまた、複数の画像形式をサポートし、サイズ変更、スタイル設定、QRコードへのロゴ追加などのカスタマイズも可能です。
IronQRは基本的なQRコード生成機能だけでなく、QRコードに関連する様々なタスクに対応するための機能を提供しています。 コンソールアプリのようなあらゆるタイプの.NETアプリケーションテンプレートに統合できるように、これらの機能とそのサンプルコードを確認してみましょう。
IronQRはQRコードのデコードに優れており、QRコードに埋め込まれた情報にアクセスする簡単な方法をユーザーに提供します。 簡単なURLから複雑な埋め込み情報まで、QRコードから素早く正確にデータを抽出することができます。
using IronQr;
using IronSoftware.Drawing;
using Color = IronSoftware.Drawing.Color;
IronQr.License.LicenseKey = "License-Key";
// Load the image file that contains the QR Code
var inputImage = AnyBitmap.FromFile("QRCode.png");
// Prepare the image for QR code detection
QrImageInput qrInput = new QrImageInput(inputImage);
// Initialize the QR Code reader
QrReader qrReader = new QrReader();
// Execute QR Code reading on the provided image
IEnumerable<QrResult> qrResults = qrReader.Read(qrInput);
// Assuming you have the QR results in qrResults as before
foreach (var result in qrResults)
{
Console.WriteLine(result.Value); // Print the QR code content to the console
}
using IronQr;
using IronSoftware.Drawing;
using Color = IronSoftware.Drawing.Color;
IronQr.License.LicenseKey = "License-Key";
// Load the image file that contains the QR Code
var inputImage = AnyBitmap.FromFile("QRCode.png");
// Prepare the image for QR code detection
QrImageInput qrInput = new QrImageInput(inputImage);
// Initialize the QR Code reader
QrReader qrReader = new QrReader();
// Execute QR Code reading on the provided image
IEnumerable<QrResult> qrResults = qrReader.Read(qrInput);
// Assuming you have the QR results in qrResults as before
foreach (var result in qrResults)
{
Console.WriteLine(result.Value); // Print the QR code content to the console
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
スキャンには以下のQRを使用する:
そして、こんな出力が出た:
必要な名前空間である IronQr
と IronSoftware.Drawing
を組み込むことから始め、画像操作を扱うために IronSoftware.Drawing
名前空間から Color
を指定する。
QRコードの読み取り処理を行う前に、ライセンスキーを IronQr.License.LicenseKey
に代入してソフトウェアをアクティベートする必要があります。 コードは次に、AnyBitmap.FromFile'を使ってファイルからQRコード画像を読み込みます。("QRCode.png")
.
画像が読み込まれたら、次のステップではQRコード検出のための準備をします。 この準備は、画像のコンテナとして機能する QrImageInput
オブジェクトを作成することで行われる。
この機能の中核は QrReader
クラスにあり、インスタンス化されて QR コードの読み取り処理を実行するために使用される。 リーダは用意された画像 qrInput
を解析し、そこに含まれるQRコードを検索する。 この操作の結果は QrResult
オブジェクトの集まりで、それぞれが画像内で検出されたQRコードを表す。
QRコードにエンコードされたデータにアクセスして利用するために、コードはforeachループを使って結果のコレクションを繰り返し処理します。各QrResult
オブジェクトにはQRコードの値などのプロパティが含まれており、アクセスして表示することができる。
IronQRは画像からQRコードを読み取る様々な方法を提供し、様々なニーズに対応します。 オプションのひとつに、速度と精度のバランスをとるミックススキャンモードがある。
もうひとつは、機械学習である。(機械学習 (ML))スキャンモードは、スマートテクノロジーを使用して、破損しているQRコードや通常では読み取りにくいQRコードを読み取ります。 このモードは、QRコードの検出が困難なタフな状況に最適です。
最後に、ベーシック・スキャン・モードがあり、これは明確で分かりやすいQRコードをスキャンする最も速くシンプルな方法です。 迅速な結果が必要な場合に最適で、QRコードも読みやすい。
using IronQr;
using IronQr.Enum;
using IronSoftware.Drawing;
using Color = IronSoftware.Drawing.Color;
IronQr.License.LicenseKey = "License-Key";
// Load the image file that contains the QR Code
var inputImage = AnyBitmap.FromFile("QRCode.png");
QrImageInput mixedScanInput = new QrImageInput(inputImage, QrScanMode.OnlyDetectionModel);
IEnumerable<QrResult> mixedScanResults = new QrReader().Read(mixedScanInput);
QrImageInput mlScanInput = new QrImageInput(inputImage, QrScanMode.OnlyDetectionModel);
IEnumerable<QrResult> mlScanResults = new QrReader().Read(mlScanInput);
QrImageInput basicScanInput = new QrImageInput(inputImage, QrScanMode.OnlyBasicScan);
IEnumerable<QrResult> basicScanResults = new QrReader().Read(basicScanInput);
using IronQr;
using IronQr.Enum;
using IronSoftware.Drawing;
using Color = IronSoftware.Drawing.Color;
IronQr.License.LicenseKey = "License-Key";
// Load the image file that contains the QR Code
var inputImage = AnyBitmap.FromFile("QRCode.png");
QrImageInput mixedScanInput = new QrImageInput(inputImage, QrScanMode.OnlyDetectionModel);
IEnumerable<QrResult> mixedScanResults = new QrReader().Read(mixedScanInput);
QrImageInput mlScanInput = new QrImageInput(inputImage, QrScanMode.OnlyDetectionModel);
IEnumerable<QrResult> mlScanResults = new QrReader().Read(mlScanInput);
QrImageInput basicScanInput = new QrImageInput(inputImage, QrScanMode.OnlyBasicScan);
IEnumerable<QrResult> basicScanResults = new QrReader().Read(basicScanInput);
Imports IronQr
Imports IronQr.Enum
Imports IronSoftware.Drawing
Imports Color = IronSoftware.Drawing.Color
IronQr.License.LicenseKey = "License-Key"
' Load the image file that contains the QR Code
Dim inputImage = AnyBitmap.FromFile("QRCode.png")
Dim mixedScanInput As New QrImageInput(inputImage, QrScanMode.OnlyDetectionModel)
Dim mixedScanResults As IEnumerable(Of QrResult) = (New QrReader()).Read(mixedScanInput)
Dim mlScanInput As New QrImageInput(inputImage, QrScanMode.OnlyDetectionModel)
Dim mlScanResults As IEnumerable(Of QrResult) = (New QrReader()).Read(mlScanInput)
Dim basicScanInput As New QrImageInput(inputImage, QrScanMode.OnlyBasicScan)
Dim basicScanResults As IEnumerable(Of QrResult) = (New QrReader()).Read(basicScanInput)
IronQRの高度なQRコード読み取り機能は、QRコードのスキャンとデコードに包括的でニュアンスのあるアプローチを提供するように設計されています。 この機能セットは、基本的なQRコード読み取り機能を超えて拡張され、より深いレベルのインタラクションとデータ抽出を提供する。
using IronQr;
using IronQr.Enum;
using IronSoftware.Drawing;
using Color = IronSoftware.Drawing.Color;
IronQr.License.LicenseKey = "License-Key";
var imageToScan = AnyBitmap.FromFile("QRCode.png");
QrImageInput qrInput = new QrImageInput(imageToScan);
QrReader qrScanner = new QrReader();
IEnumerable<QrResult> scanResults = qrScanner.Read(qrInput);
foreach (QrResult qrResult in scanResults)
{
Console.WriteLine(qrResult.Value);
Console.WriteLine(qrResult.Url);
foreach (IronSoftware.Drawing.PointF coordinate in qrResult.Points)
{
Console.WriteLine($"{coordinate.X}, {coordinate.Y}");
}
}
using IronQr;
using IronQr.Enum;
using IronSoftware.Drawing;
using Color = IronSoftware.Drawing.Color;
IronQr.License.LicenseKey = "License-Key";
var imageToScan = AnyBitmap.FromFile("QRCode.png");
QrImageInput qrInput = new QrImageInput(imageToScan);
QrReader qrScanner = new QrReader();
IEnumerable<QrResult> scanResults = qrScanner.Read(qrInput);
foreach (QrResult qrResult in scanResults)
{
Console.WriteLine(qrResult.Value);
Console.WriteLine(qrResult.Url);
foreach (IronSoftware.Drawing.PointF coordinate in qrResult.Points)
{
Console.WriteLine($"{coordinate.X}, {coordinate.Y}");
}
}
Imports IronQr
Imports IronQr.Enum
Imports IronSoftware.Drawing
Imports Color = IronSoftware.Drawing.Color
IronQr.License.LicenseKey = "License-Key"
Dim imageToScan = AnyBitmap.FromFile("QRCode.png")
Dim qrInput As New QrImageInput(imageToScan)
Dim qrScanner As New QrReader()
Dim scanResults As IEnumerable(Of QrResult) = qrScanner.Read(qrInput)
For Each qrResult As QrResult In scanResults
Console.WriteLine(qrResult.Value)
Console.WriteLine(qrResult.Url)
For Each coordinate As IronSoftware.Drawing.PointF In qrResult.Points
Console.WriteLine($"{coordinate.X}, {coordinate.Y}")
Next coordinate
Next qrResult
これはIronQRを使ってQRコードをスキャンしたときの出力です:
以下のQRコードを使用しています:
各 QrResult
オブジェクトはデコードされたデータへのアクセスを提供する。(値)埋め込みURL(URL`)空間座標(ポイント)画像内のQRコードの
IronQRは検出されたQRコードごとに、正確な内容やQRコードに含まれるURLなどの詳細情報を提供します。 さらに、このライブラリは、画像内のQRコードのコーナーの正確な座標を提供します。(Points`プロパティを通して).
C#アプリケーションでQRコードのIronQRライブラリを使用してQRコードジェネレータを作成するには、以下の手順に従ってください。 このガイドでは、Windowsフォーム・アプリケーションのセットアップ、IronQRライブラリのインストール、QRコードを生成するコードの記述、出力の理解について説明します。
プロジェクトタイプとしてWindows Forms Appを選択します。 言語は必ずC#(シーシャープ)を選択してください。
プロジェクトの名前を入力し、保存場所を選択します。 そして次の画面で、.NETフレームワークを選択する。 次にCreateをクリックする。
Visual StudioでWindowsフォーム・アプリケーションを作成し、開きます。
それでは、いよいよIronQRライブラリをプロジェクトにインストールします。 IronQRライブラリはさまざまな方法でインストールできます。 好みに合わせて選んでください:
検索ボックスに「IronQR」と入力し、Enterキーを押します。
リストの中からIronQRを探し、その横にあるインストールをクリックします。
ツール > NuGet パッケージ マネージャー > パッケージ マネージャー コンソールに移動します。
Install-Package**」と入力し、Enterキーを押します。
QRコード生成アプリケーションを起動すると、すぐに「QR Generator IronQR」と題された印象的なヘッダーが表示され、太く権威のあるフォントで設定されています。 エージェンシーFBというフォントは、そのクリーンでモダンなラインが、効率性と正確さを伝えるために選ばれた。 48ポイントという大きめのフォントのタイトルは、目立つと同時に主張があり、ユーザーの注意を引きつけ、アプリケーションのアイデンティティをしっかりと確立します。
入力セクションの中心にあるのは、シンプルかつ基本的な構成要素であるテキスト入力ボックスである。 ここでユーザーは、QRコードにエンコードしたいデータを入力することができる。 ボックスは広々としており、かなりの量のテキストを収容し、上部付近に目立つように配置されている。
テキスト入力の下にある "ロゴ選択 "エリアでは、さらにカスタマイズが可能です。 ユーザーは、QRコードに埋め込まれるロゴをアップロードして、ブランド認知度を高めたり、コードをパーソナライズすることができる。 隣接する画像ボックスは、選択したロゴのプレビューを提供し、即座に視覚的なフィードバックを提供します。
右側に移動すると、インターフェイスに色選択のオプションが表示される。 QRコードの色と背景色の2つのボタンで、QRコードのパレットをカスタマイズできます。 これらのボタンの隣にあるリッチテキストボックスには、現在選択されている色が表示されます。
テキスト、ロゴ、色のオプションを備えた入力セクションの入念なレイアウトは、QRコードを作成する際のユーザーの優先順位を明確に理解していることを反映している。 機能性と柔軟性を兼ね備えており、ユーザーは必要な情報を素早く効率的に入力できる一方、創造性を発揮する余地もある。
カラー・カスタマイズ・ツールに隣接して、ユーザーは "Dimensions"(寸法)の入力を見つける。この数値設定は、QRコードの全体的なサイズを決定するため非常に重要であり、名刺、チラシ、デジタル画面など、意図された表示コンテキストに完全に収まるようにします。
寸法入力の隣にある「余白」フィールドでは、QRコードを囲む余白を指定することができます。 余白は単なる美的選択ではなく、スキャナーによるQRコードの読み取りやすさに影響を与える機能的要素です。 このアプリケーションは、ユーザーがこのパラメーターを簡単に調整できるように、数値によるアップダウンコントロールを提供する。
ユーザーがQRコードの生成を開始すると、フォームの左側にある「出力」と書かれた大きな画像ボックスが焦点となる。 これはダイナミック・ディスプレイとして機能し、生成されたQRコードのリアルタイム・プレビューを提供する。 この即時の視覚的フィードバックは、ユーザーがデザインの選択を確認し、保存する前にQRコードが期待に応えていることを確認するために不可欠である。
QR生成」ボタンは、アプリケーションのインターフェイスにおける極めて重要な制御要素です。 フォーム内に戦略的に配置されたこのボタンは、QRコード作成プロセスのきっかけとなります。 このボタンをクリックすると、アプリケーションはユーザーによって定義されたすべての入力データとスタイリングパラメータを受け取り、カスタムQRコードの生成を開始します。
QRコードが生成され、出力プレビューエリアに表示されると、「QRを保存」ボタンが登場します。 クリックすると保存ダイアログが開き、希望のファイル形式と保存場所を選択できる。
このボタンを1回クリックするだけで、それまでの入力や選択がすべてクリアされ、すべての設定がデフォルト値に戻ります。 これはフォームの重要な側面であり、各オプションを手動で調整することなく、アプリケーションを再初期化する迅速な方法を提供する。
まず、必要な名前空間 IronQr
と IronSoftware.Drawing
. これらの名前空間は、アプリケーション内でQRコードや色を生成・操作するために必要な機能を提供するため、必要不可欠です。 カスタム Color
クラスはQRコード生成時の色管理を容易にするために定義され、デフォルトの System.Drawing.Color
をオーバーライドしてIronQR の要件との互換性を確保する。
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`クラスのコンストラクタはアプリケーションの使用準備に重要な役割を果たす。 ここでアプリケーションのコンポーネントが初期化されます。これはWindowsフォームアプリケーションの標準的なステップで、フォームのUI要素をセットアップするためのものです。
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`:このメソッドはIronQR ライブラリの有効なライセンスキーを適用するために呼び出される。 商用アプリケーションやIronQRライブラリの全機能を利用するにはライセンスキーの使用が必須です。
EnsureDirectoryExists`:生成されたQRコードを保存する必要があるため、このメソッドは専用のディレクトリが存在することを確認する。 アプリケーションの起動パスに "QR Codes "ディレクトリが存在するかどうかをチェックし、存在しない場合は作成します。
IronQRを制限なく動作させるためには、有効なライセンスキーを適用する必要があります。 これは SetLicenseKey
メソッドによって実現されます。このメソッドは静的なメソッドで、購入したライセンスキーや試用版のライセンスキーを使ってライブラリを設定するように設計されています。 以下のコード・スニペットは、ライセンス・キーの設定方法を示しています:
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"を から取得した実際のライセンスキーに置き換えてください。 このメソッドは
QR_Generator` クラスのコンストラクタ内で呼び出され、アプリケーションの起動と同時に、QRコードの生成が行われる前にライセンスが適用されるようにする。
アプリケーションは EnsureDirectoryExists
メソッドを使用して、QRコードを格納するための指定されたディレクトリが存在するかどうかをチェックする。 そうでない場合は、ディレクトリを作成する。 このメソッドは string
パラメータを取り、チェックまたは作成するディレクトリのパスを指定する。 その方法はこうだ:
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
このメソッドは、System.IO
名前空間を利用してファイルシステムとやりとりする。 まず、Directory.Exists
を使用して、指定したパスのディレクトリが存在するかどうかをチェックします。 ディレクトリが存在しない場合(falseが返される)その後、
Directory.CreateDirectory`を使用してディレクトリを作成します。
QRコードのディレクトリへのパスは QR_Generator
クラスのコンストラクタで qrCodesDirectory
として定義される:
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")
このアプリケーションはユーザー・インタフェースに2つのボタンを提供し、そ れぞれが色を選択するためのメソッドに結びついている:QRコードの色はbtn_color_Click
、背景の色はbtn_background_Click
である。 これらのメソッドは、カラー・ダイアログ・ボックスを活用してユーザーに色を選ばせる。
カラーダイアログボックスを使用して色を選択すると、選択した色が16進数文字列形式に変換されます。 これは、IronQRライブラリが色を16進数で指定する必要があるためです。 変換は ColorToHex
メソッドを通して行われる:
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`メソッドは選択された色を受け取り、16進数文字列を使用してIronSoftware.Drawing.Colorフォーマットに変換し、選択内容に応じてQRコードの前景色または背景色を更新します。 また、新しい色の選択を反映させるためにUIも更新される:
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
このアプリケーションには(**btn_logo)をクリックすると、ファイルダイアログが開き、ロゴとして使用する画像ファイルを選択することができます。 この機能は、QRコードをブランド化したいと考えている企業や個人にとって非常に重要である。 ここでは、ロゴの選択と統合プロセスについて説明する:
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
画像の選択に成功すると、アプリケーションはその画像を読み込み、プレビューを表示しようとします。 そして、AnyBitmap
オブジェクトである logoBmp
に選択された画像がセットされ、後に QR 生成ロジックで使用されます。
生成処理は、btn_generate_Click
メソッドにリンクされている "Generate "ボタンをユーザーがクリックしたときに始まる。 このメソッドはトリガーとして動作し、実際の生成ロジックが存在する GenerateQRCode
関数を呼び出す。
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`メソッドの中で、アプリケーションは入力テキストとスタイルオプションを含む指定されたパラメータに基づいてQRコードを構築する。 このメソッドは、QRコードの作成をカプセル化し、選択された色、寸法、余白、そしてオプションでロゴを適用する。
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オブジェクトはエラー訂正レベルを定義し、QRコードの損傷や不明瞭さに対する耐性を強化します。 CreateStyleOptions
メソッドはQrStyleOptions
オブジェクトを生成し、色、寸法、ロゴのようなユーザーのカスタム設定を含む。 その方法を詳しく説明しよう:
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
このメソッドは QrStyleOptions
オブジェクトを作成し、QR コード生成ロジックがこのオブジェクトを使用してユーザーの好みを適用します。 オプションは以下の通り:
と
Color`:これらのプロパティはQRコードの背景色と前景色を設定します。Dimensions
:このプロパティはQRコードのサイズを決定し、QRコードが異なるコンテキストや媒体にどのように適合するかを柔軟に提供します。Margins
:このプロパティはQRコードの周囲のマージンサイズを設定し、QRコードが周囲の要素から分離されていることを保証します。保存機能は、btn_save_Click
メソッドにリンクされた "Save "ボタンによって起動される。 このメソッドは保存ロジックを実装する SaveQRCode
を呼び出す。 このプロセスには、ファイル保存ダイアログを表示し、ユーザーがQRコードを保存するファイル形式と保存場所を選択できるようにすることも含まれます。
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
このメソッドは、生成されたQRコードが利用可能かどうかをチェックする。 その場合、PNGまたはJPEG形式でファイルを保存するオプションが表示されます。 DetermineImageFormat`関数は、ユーザーが選択したファイル拡張子に基づいて、画像が正しい形式で保存されるようにします。
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
この柔軟性により、ユーザーは、品質を優先するかどうかにかかわらず、ニーズに最も適したフォーマットを選択することができます。(PNG)またはファイルサイズ(JPEG (ジェイペグ)).
リセット機能は "Reset "ボタンにリンクされ、"Reset "ボタンは btn_reset_Click
メソッドを呼び出す。 このメソッドは、次にResetFields
を呼び出します。この関数は、すべてのユーザー入力をクリアし、テキストフィールド、色の選択、選択されたロゴを含むすべての設定のデフォルト値を復元するように設計されています。
private void btn_reset_Click(object sender, EventArgs e)
{
ResetFields();
}
private void ResetFields()
{
txt_QR.Text = string.Empty;
txt_dimension.Value = 200;
txt_margin.Value = 0;
bgColor = Color.White;
color = Color.Black;
txt_selected_color.BackColor = System.Drawing.Color.White;
txt_selected_bgcolor.BackColor = System.Drawing.Color.Black;
logoBmp = null;
selected_logo.Image = null;
pictureBox.Image = null;
}
private void btn_reset_Click(object sender, EventArgs e)
{
ResetFields();
}
private void ResetFields()
{
txt_QR.Text = string.Empty;
txt_dimension.Value = 200;
txt_margin.Value = 0;
bgColor = Color.White;
color = Color.Black;
txt_selected_color.BackColor = System.Drawing.Color.White;
txt_selected_bgcolor.BackColor = System.Drawing.Color.Black;
logoBmp = null;
selected_logo.Image = null;
pictureBox.Image = null;
}
Private Sub btn_reset_Click(ByVal sender As Object, ByVal e As EventArgs)
ResetFields()
End Sub
Private Sub ResetFields()
txt_QR.Text = String.Empty
txt_dimension.Value = 200
txt_margin.Value = 0
bgColor = Color.White
color = Color.Black
txt_selected_color.BackColor = System.Drawing.Color.White
txt_selected_bgcolor.BackColor = System.Drawing.Color.Black
logoBmp = Nothing
selected_logo.Image = Nothing
pictureBox.Image = Nothing
End Sub
この方法は、QRコード生成に関わる各コンポーネントをリセットする。 例えば、QRコードのテキストを消去し、寸法と余白をデフォルト値に設定し、選択した色やロゴを削除します。
このアプリケーションは ShowError
メソッドを使って、ユーザーフレンドリーな方法でエラーメッセージを表示する。 このメソッドは、タイトルとメッセージという2つのパラメータを取り、ユーザーにエラーに関するコンテキストを提供する。 その方法はこうだ:
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
この方法はアプリケーションのさまざまな部分で利用され、エラーが発生した場合、明確で簡潔なメッセージでユーザーに速やかに通知されるようになっている。 例えば、ロゴの読み込み中やQRコードの生成処理中にエラーが発生した場合、アプリケーションはShowError
を呼び出して問題の詳細を表示します。
以下は、コードをより簡単に理解するのに役立つ完全なコードである:
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
アプリケーションが実行されると、提供された画像に示されているようにメイン・ウィンドウが表示されます。 レイアウトは、入力、スタイリング、出力、アクションの各セクションにきちんと整理されている。
最初のステップでは、"Input QR Text "フィールドにデータを入力する。 このデータは、URLやテキスト情報など、QRコードのコンテンツを形成する。 次に、QRコードをパーソナライズするために、「ロゴを選択」ボタンをクリックしてロゴを選択します。 ロゴを選択すると、ボタンに隣接するプレビューボックスにロゴが表示され、QRコードのデザインに組み込まれていることが確認できます。
ロゴの選択に続いて、QRコードの前景色と背景色を選択します。 各ボタンをクリックすると、選択した色が各ボタンの横にある色表示ボックスに反映され、選択した色がすぐに視覚的に確認できる。
この特定のQRコードでは、寸法を500に設定し、コードがニーズに適したサイズになるようにし、余白を20に調整してQRコードの周囲にバッファを設け、スキャンの問題を防ぎます。
すべての入力とスタイリング・オプションの設定が完了したら、「Generate QR」ボタンをクリックしてQRコードを生成します。 アプリケーションは入力を処理し、作成したばかりのQRコードを出力画像ボックスに表示します。
生成されたQRコードを保存するには、「Save QR」ボタンをクリックします。 この操作で保存ダイアログが開き、QRコード画像の保存先とファイル形式を選択できます。
保存されると、QRコードが正常に保存されたことを示す成功メッセージが表示されます。
やり直したり、新しいQRコードを作成する必要がある場合、「フォームをリセット」ボタンをクリックすると、フォームが元の状態に戻り、すべてのフィールドと選択項目がクリアされ、次のQRコード生成の準備が整います。
保存されたQRコードです:
最後に、このガイドではC#アプリケーションでIronQRライブラリを使用してQRコードを生成する手順を説明しました。 Visual Studioでのプロジェクトのセットアップから、IronQRライブラリの統合、ユーザーフレンドリーなインターフェースの設計、バックエンドロジックの記述までのステップを分解することで、アプリケーションにQRコード機能を追加することがいかに身近なものであるかを示しました。
IronQRの能力をさらに探求することに興味がある人にとって、IronQRが提供する以下の機能は注目に値する。無料試用をご覧いただきたい。 IronQRをプロジェクトに統合する場合、ライセンスは$749からで、プロフェッショナルグレードのQRコード生成のための費用対効果の高いソリューションを提供します。
9つの .NET API製品 オフィス文書用