IRONSOFTWAREHOME

How to Create a Desktop BarCode Application (Scanner/Generator) with .NET MAUI

Curtis Chau
Curtis Chau
Updated: 2026年6月29日

包括的なソフトウェア・ソリューションでは、モバイル・アクセシビリティだけではありません。 WindowsやmacOSなどのデスクトップOSにネイティブにデプロイできることも重要です。 このクロスプラットフォームアプローチにより、企業は資産追跡や管理などの大量タスクにワークステーションの能力をフルに活用することができます。

適切なデスクトップサポートがないと、ワークフローが中断されたり、最悪の場合、性能の低いデバイスを使わざるを得なくなったりします。 これは、オフィススタッフがデスクを離れることなくコードのバッチを生成したり、スキャンを迅速に確認したりする必要がある在庫管理では特に重要です。

IronBarcodeは、これらの機能を実装するために必要なツールを提供し、.NET MAUIアプリケーションがどのコンピュータでも確実に動作することを保証します。

この記事では、デスクトップBarCodeスキャナデスクトップBarCodeジェネレータの両方を構築するためにIronBarcodeを統合する方法を説明します。



.NET MAUIデスクトップアプリケーション

IronBarcodeを.NET MAUIアプリに統合することは、ライブラリがすぐにデスクトッププラットフォームでネイティブに動作するため、簡単です。 この例では、IronBarcodeを使用してバーコードスキャナとバーコードジェネレータの両方を別々に作成します。

まず、バーコードスキャナから始めましょう。

バーコード スキャナー インターフェース XAML

.NET MAUIインターフェースでは、ユーザーが送信ボタンでBarCode画像をアップロードできるシンプルなインターフェースが実装されています。 プロジェクト内の MainPage.xaml ファイルを以下に示す内容で置き換えてください。

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MauiApp1.MainPage"
             BackgroundColor="{DynamicResource PageBackgroundColor}">

    <ScrollView>
        <VerticalStackLayout Spacing="25" Padding="30" VerticalOptions="Center">

            <Label Text="Desktop Barcode Scanner"
                   FontSize="32"
                   HorizontalOptions="Center" />

            <Image x:Name="ScannerImage"
                   HeightRequest="300"
                   WidthRequest="400"
                   BackgroundColor="#F0F0F0"
                   Aspect="AspectFit"
                   HorizontalOptions="Center" />

            <Button Text="Select Image to Scan"
                    Clicked="OnScanButtonClicked"
                    HorizontalOptions="Center" 
                    WidthRequest="200"/>

            <Label x:Name="ResultLabel"
                   Text="Result will appear here..."
                   FontSize="20"
                   HorizontalOptions="Center"
                   HorizontalTextAlignment="Center" />

        </VerticalStackLayout>
    </ScrollView>

</ContentPage>
XML

デスクトップ バーコード スキャナー Logic CS

次に、ユーザーがボタンをクリックしたときのロジックを実装します。 UIのスキャンボタンに OnScanButtonClicked イベントハンドラが添付されています。

最初にユーザーがアップロードするバーコードを選択できるようにするために、PickPhotoAsync が使用され、その後ファイルストリームにアクセスするために OpenReadAsync が使用されます。 画像データは MemoryStream に使用 CopyToAsync を用いて即座にコピーされます。 これにより、データを同時に画面上に画像を表示し、バーコードをスキャンするために Read メソッドのために使用できます。

最後に、有効なバーコードが検出された場合はバーコードの値がUIに表示され、画像にバーコードが検出されなかった場合は赤いメッセージが表示されます。

ご注意: アプリケーションをテストする前に自分のライセンスキーに置き換えてください。
using IronBarCode;

namespace MauiApp1
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();
            // Your license key is set here
            IronBarCode.License.LicenseKey = "YOUR_KEY"
        }

        private async void OnScanButtonClicked(object sender, EventArgs e)
        {
            try
            {
                var fileResult = await MediaPicker.Default.PickPhotoAsync();

                if (fileResult != null)
                {
                    // 1. Copy the file content into a byte array or MemoryStream immediately
                    // This ensures we have the data in memory before the file closes
                    byte[] imageBytes;
                    using (var stream = await fileResult.OpenReadAsync())
                    using (var memoryStream = new MemoryStream())
                    {
                        await stream.CopyToAsync(memoryStream);
                        imageBytes = memoryStream.ToArray();
                    }

                    // 2. Set the Image Source for the UI
                    // We give the UI a FRESH stream from the bytes we just saved
                    ScannerImage.Source = ImageSource.FromStream(() => new MemoryStream(imageBytes));

                    // 3. Process the Barcode
                    // We give IronBarcode its OWN fresh stream from the same bytes
                    using (var processingStream = new MemoryStream(imageBytes))
                    {
                        // 4. Read the barcode with Read
                        var results = BarcodeReader.Read(processingStream);

                        // 5. Display barcode results
                        if (results != null && results.Count > 0)
                        {

                            // Successfully found barcode value
                            ResultLabel.Text = $"Success: {results[0].Value}";
                            ResultLabel.TextColor = Colors.Green;
                        }
                        else
                        {
                            // Image uploaded has no barcode or barcode value is not found
                            ResultLabel.Text = "No barcode detected.";
                            ResultLabel.TextColor = Colors.Red;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                // Display any exception thrown in runtime
                ResultLabel.Text = $"Error: {ex.Message}";
                ResultLabel.TextColor = Colors.Red;
            }
        }
    }
}

バーコードの値が見つかったときの出力

出力された BarCode

ご覧のように、アプリケーションはバーコードの結果とアップロードされたバーコード画像を表示します。

バーコードの値が見つかりませんと出力されます

出力された BarCode は見つかりませんでした。

ご覧のように、ユーザーがバーコードを含まない画像をアップロードすると、"No barcodes found "という赤いメッセージが表示されます。

デスクトップ バーコード ジェネレーター

次のパートでは、IronBarcodeをMAUIに統合してバーコードジェネレーターを作成することで、同じコンセプトを構築します。

バーコード ジェネレーター インターフェース XAML

ジェネレーターのインターフェースには、テキスト入力とドロップダウンメニューによるバーコードタイプの選択を可能にするシンプルなフォームが実装されています。 生成と保存のプロセスを開始するためのボタンと、結果を表示するための画像ビューが含まれています。 MainPage.xaml ファイルは以下に示された内容で置き換えられるべきです。

1次元バーコードの完全なリストについてはこちらを、2次元バーコードについてはこちらを参照してください。

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MauiApp1.MainPage"
             BackgroundColor="{DynamicResource PageBackgroundColor}">

    <ScrollView>
        <VerticalStackLayout Spacing="20" Padding="30" VerticalOptions="Center">

            <Label Text="Barcode Generator"
                   FontSize="32"
                   HorizontalOptions="Center" />

            <Entry x:Name="BarcodeEntry"
                   Placeholder="Enter value (e.g. 12345 or https://ironsoftware.com)"
                   WidthRequest="300" />

            <Picker x:Name="BarcodeTypePicker"
                    Title="Select Barcode Type"
                    WidthRequest="300">
                <Picker.ItemsSource>
                    <x:Array Type="{x:Type x:String}">
                        <x:String>QRCode</x:String>
                        <x:String>Code128</x:String>
                        <x:String>EAN13</x:String>
                        <x:String>Code39</x:String>
                        <x:String>PDF417</x:String>
                    </x:Array>
                </Picker.ItemsSource>
            </Picker>

            <Button Text="Generate &amp; Save"
                    Clicked="OnGenerateButtonClicked"
                    HorizontalOptions="Center"
                    WidthRequest="200" />

            <Image x:Name="GeneratedImage"
                   HeightRequest="200"
                   WidthRequest="300"
                   BackgroundColor="#F0F0F0"
                   Aspect="AspectFit" />

            <Label x:Name="StatusLabel"
                   FontSize="16"
                   HorizontalOptions="Center"
                   HorizontalTextAlignment="Center" />

        </VerticalStackLayout>
    </ScrollView>

</ContentPage>
XML

デスクトップ バーコード ジェネレーター Logic CS

次に、ボタンをクリックするイベントのロジックを実装します。 UIの生成ボタンに OnGenerateButtonClicked イベントハンドラが添付されています。

ユーザー入力が検証され、テキストが存在し、型が選択されていることが確認された後、選択が正しい BarcodeEncoding にマッピングされます。 BarcodeWriter.CreateBarcode は画像を生成し、サイズ変更し、JPEGバイナリデータに変換するために使用されます。 その後、MemoryStream を使用して画像が画面に表示されます。

最後に、生成されたバーコードファイルは File.WriteAllBytes を使用してユーザーのデスクトップに直接保存され、状態ラベルが保存場所を確認するように更新されます。

ご注意: アプリケーションをテストする前に自分のライセンスキーに置き換えてください。
using IronBarCode;
using System.IO; // Required for saving files

namespace MauiApp1
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();
            IronBarCode.License.LicenseKey = "YOUR-KEY";

            // Set default selection
            BarcodeTypePicker.SelectedIndex = 0;
        }

        private void OnGenerateButtonClicked(object sender, EventArgs e)
        {
            try
            {
                // 1. Get and Validate Input
                string text = BarcodeEntry.Text;

                if (string.IsNullOrWhiteSpace(text))
                {
                    StatusLabel.Text = "Error: Please enter text.";
                    StatusLabel.TextColor = Colors.Red;
                    return;
                }

                if (BarcodeTypePicker.SelectedIndex == -1)
                {
                    StatusLabel.Text = "Error: Please select a type.";
                    StatusLabel.TextColor = Colors.Red;
                    return;
                }

                // 2. Determine Encoding Type
                string selectedType = BarcodeTypePicker.SelectedItem.ToString();
                BarcodeEncoding encoding = BarcodeEncoding.QRCode;

                switch (selectedType)
                {
                    case "QRCode": encoding = BarcodeEncoding.QRCode; break;
                    case "Code128": encoding = BarcodeEncoding.Code128; break;
                    case "EAN13": encoding = BarcodeEncoding.EAN13; break;
                    case "Code39": encoding = BarcodeEncoding.Code39; break;
                    case "PDF417": encoding = BarcodeEncoding.PDF417; break;
                }

                // 3. Generate Barcode
                var barcode = BarcodeWriter.CreateBarcode(text, encoding);
                barcode.ResizeTo(400, 200); // Optional resizing

                // 4. Convert to Bytes (JPEG)
                var bytes = barcode.ToJpegBinaryData();

                // 5. Update UI
                GeneratedImage.Source = ImageSource.FromStream(() => new MemoryStream(bytes));

                // 6. Save to Desktop automatically
                string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
                string fileName = $"barcode_{DateTime.Now:yyyyMMdd_HHmmss}.jpg";
                string fullPath = Path.Combine(desktopPath, fileName);

                File.WriteAllBytes(fullPath, bytes);

                // 7. Show Success Message
                StatusLabel.Text = $"Saved to Desktop:\n{fileName}";
                StatusLabel.TextColor = Colors.Green;
            }
            catch (Exception ex)
            {
                StatusLabel.Text = $"Error: {ex.Message}";
                StatusLabel.TextColor = Colors.Red;
            }
        }
    }
}

生成された BarCode で出力する

バーコード生成の成功

ご覧のように、アプリケーションは生成されたBarCodeを表示し、ユーザーのデスクトップに保存します。

出力の失敗

バーコードの失敗を生成する

バーコードの種類によっては、入力値に制限や形式要件があります。 バーコードの生成に失敗すると、アプリケーションは上記のようにIronBarcode例外を表示します。 それぞれのバーコードタイプのフォーマットについて、詳細な1次元および2次元をご参照ください。

上記の例(デスクトップバーコードスキャナーデスクトップバーコードジェネレーター)をテストするには、このサンプルプロジェクトをダウンロードしてください。

よくある質問

.NET MAUIとは?

.NET MAUIは、C#とXAMLを使用してネイティブのモバイルアプリとデスクトップアプリを作成するためのクロスプラットフォームフレームワークです。開発者は、単一のコードベースを使用して、Android、iOS、macOS、Windows用のアプリケーションを構築できます。

IronBarcode .NET MAUIアプリケーションでどのように使用できますか?

IronBarcodeを.NET MAUIアプリケーションに統合することで、バーコードの生成とスキャンが可能になります。IronBarcodeは、複数のデスクトップ・プラットフォームでバーコードを作成し、読み取る簡単な方法を提供します。

IronBarcode はどのような種類のバーコードを生成できますか?

IronBarcodeはQRコード、Code 128、Code 39、UPC、EANなど様々なバーコードフォーマットの生成をサポートしており、デスクトップアプリケーションのニーズに対応します。

IronBarcodeで構築されたデスクトップアプリケーションを使ってバーコードをスキャンすることは可能ですか?

IronBarcodeはデスクトップアプリケーションのバーコードスキャンに使用でき、ユーザーはアプリケーションのインターフェイスから素早く効率的にバーコード情報をデコードすることができます。

バーコードアプリケーションにIronBarcodeを使用する利点は何ですか?

IronBarcodeは、高い精度、スピード、使いやすさを提供します。.NET MAUIとシームレスに統合され、デスクトップアプリケーションでのバーコード生成とスキャンを包括的にサポートします。

IronBarcodeは大量のバーコードデータを処理できますか?

IronBarcodeは大量のバーコードデータを効率的に処理するように設計されており、広範なバーコード処理を必要とするアプリケーションに適しています。

バーコードのスキャンと生成には、別のライブラリが必要ですか?

IronBarcodeは、バーコードのスキャンと生成の両方の機能を単一のライブラリで提供し、デスクトップアプリケーションの開発プロセスを簡素化します。

.NET MAUIでIronBarcodeを使用するためのシステム要件は何ですか?

IronBarcodeは、.NET MAUIと互換性のある.NET環境を必要とします。Windows、macOS、その他.NET MAUIアプリケーションが動作するプラットフォームをサポートしています。

IronBarcodeはどのようにバーコードの精度を保証していますか?

IronBarcodeは高度なアルゴリズムを使用し、バーコードの生成とスキャンの両方で高い精度を保証し、バーコードデータのエンコードやデコードにおけるエラーの可能性を低減します。

IronBarcodeは商用でも個人プロジェクトでも使用できますか?

また、IronBarcodeは商用、個人プロジェクトともに使用可能で、さまざまなプロジェクト要件に合わせた柔軟なライセンスオプションを提供しています。

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

...
詳しく読む

準備はできましたか?

Nuget Downloads 2,422,100バージョン:2026.9リリースされたばかり

あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。
PDF用C# NuGetライブラリ
NuGetでインストール

バージョン: 2026.9

PM > Install-Package BarCode
nuget.org/packages/BarCode/
  1. ソリューションエクスプローラーで参照を右クリックし、NuGetパッケージを管理を選択
  2. 「参照」を選択して「IronBarCode」を検索
  3. パッケージを選択してインストール
C# PDF DLL
DLLをダウンロード

バージョン: 2026.9

  1. IronBarcodeをダウンロードして、ソリューションディレクトリ内の~/Libsなどの場所に解凍してください
  2. Visual Studioのソリューションエクスプローラーで、Referencesを右クリックします。 "IronBarcode.dll"を選択します

ライセンス料金は$999から

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

Your trial license will be sent to your email address

制限なし。100% ロック解除済み。クレジットカード不要。

bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
無料のライブデモを予約する
Booking Badge

世界中の数百万人のエンジニアから信頼されています。

ライセンスはより安く
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。