IRONSOFTWAREHOME

Jak stworzyć aplikację do obsługi kodów BarCode (skaner/generator) na komputery stacjonarne przy użyciu .NET MAUI

Curtis Chau
Curtis Chau
Updated: 29 czerwca 2026

W przypadku kompleksowego rozwiązania programowego nie chodzi tylko o dostępność na urządzeniach mobilnych. Równie istotna jest możliwość natywnego wdrażania na systemach operacyjnych komputerów stacjonarnych, takich jak Windows i macOS. To podejście wielopłatformowe umożliwia firmom wykorzystanie pełnej mocy stacji roboczych do zadań wymagających dużej wydajności, takich jak śledzenie zasobów i administracja.

Bez odpowiedniego wsparcia na komputerach stacjonarnych przepływ pracy zostaje zakłócony lub, co gorsza, przeniesiony na urządzenia o mniejszych możliwościach. Jest to szczególnie ważne w zarządzaniu zapasami, gdzie pracownicy biurowi muszą generować partie kodów lub szybko weryfikować skany bez odchodzenia od biurka.

IronBarcode dostarcza narzędzia niezbędne do wdrożenia tych funkcji, zapewniając niezawodne działanie aplikacji .NET MAUI na każdym komputerze.

W tym artykułe wyjaśnimy, jak zintegrować IronBarcode w celu stworzenia zarówno skanera BarCode na komputer, jak i generatora BarCode na komputer.



Aplikacja desktopowa .NET MAUI

Integracja IronBarcode z aplikacją .NET MAUI jest prosta, ponieważ biblioteka IronBarcode działa natywnie z platformą desktopową od razu po uruchomieniu. W tym przykładzie stworzymy zarówno skaner kodów kreskowych, jak i generator kodów kreskowych, używając osobno biblioteki IronBarcode.

Zacznijmy najpierw od skanera BarCode.

Interfejs skanera BarCode XAML

W przypadku interfejsu .NET MAUI zaimplementowano prosty interfejs, który pozwala użytkownikom na przesyłanie obrazów BarCode za pomocą przycisku przesyłania. Plik MainPage.xaml w projekcie powinien być zastąpiony zawartością przedstawioną poniżej.

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

Logika skanera BarCode na komputery stacjonarne CS

Następnie wdrażana jest logika działania po kliknięciu przycisku przez użytkownika. Do przycisku skanowania w interfejsie jest przypięty obsługujący zdarzeń OnScanButtonClicked.

Najpierw jest wykorzystywana PickPhotoAsync, aby umożliwić użytkownikom wybranie kodu kreskowego do przesłania, a następnie OpenReadAsync, aby uzyskać dostęp do strumienia pliku. Dane obrazu są natychmiast kopiowane do MemoryStream z użyciem CopyToAsync. Pozwala to na jednoczesne użycie danych do wyświetlenia obrazu na ekranie i dla metody Read do skanowania kodu kreskowego.

Wreszcie, jeśli wykryty zostanie prawidłowy kod kreskowy, w interfejsie użytkownika wyświetlana jest jego wartość; w przeciwnym razie pojawia się czerwony komunikat informujący, że na obrazie nie znaleziono kodu kreskowego.

Zwróć uwagę: Przed przetestowaniem aplikacji należy zastąpić klucz licencyjny własnym.
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;
            }
        }
    }
}

Wynik z znalezioną wartością BarCode

Wynik wyszukiwania BarCodes

Jak widać, aplikacja wyświetla wynik skanowania kodu kreskowego oraz przesłany obraz kodu kreskowego.

Wynik bez znalezionej wartości BarCode

Nie znaleziono BarCodes

Jak widać, gdy użytkownik prześle obraz, który nie zawiera BARCODE'a, wyświetla się czerwony komunikat o treści "Nie znaleziono BARCODE'ów".

Generator BarCode na komputery stacjonarne

Kolejna część opiera się na tej samej koncepcji, integrując IronBarcode z MAUI w celu stworzenia generatora kodów kreskowych.

Interfejs generatora BarCode'ów XAML

W interfejsie generatora zaimplementowano prosty formularz, umożliwiający wprowadzanie tekstu i wybór typu BARCODE za pomocą menu rozwijanego. Zawiera przycisk uruchamiający proces generowania i zapisywania, a także widok obrazu do wyświetlania wyniku. Plik MainPage.xaml powinien być zastąpiony zawartością pokazana poniżej.

Pełną listę BARCODE-ów 1D można znaleźć tutaj, a BARCODE-ów 2D tutaj.

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

Desktop BarCode Generator Logic CS

Następnie wdrażana jest logika zdarzenia kliknięcia przycisku. Do przycisku generowania w interfejsie przypięty jest obsługujący zdarzeń OnGenerateButtonClicked.

Wejście użytkownika jest weryfikowane, aby upewnić się, że tekst jest obecny i wybrano typ, po czym wybór jest mapowany na właściwą BarcodeEncoding. BarcodeWriter.CreateBarcode jest używane do generowania obrazu, zmiany jego rozmiaru i konwersji na dane binarne JPEG. Obraz jest następnie wyświetlany na ekranie za pomocą MemoryStream.

Na koniec, wygenerowany plik z kodem kreskowym jest zapisywany bezpośrednio na Pulpicie użytkownika przy użyciu File.WriteAllBytes, a etykieta stanu jest aktualizowana, aby potwierdzić lokalizację zapisu.

Zwróć uwagę: Przed przetestowaniem aplikacji należy zastąpić klucz licencyjny własnym.
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;
            }
        }
    }
}

Wynik z wygenerowanym BarCode

Generowanie BarCode – sukces

Jak widać, aplikacja wyświetla wygenerowany BARCODE i zapisuje go na pulpicie użytkownika.

Błąd wyjściowy

Błąd generowania BarCode

Niektóre typy BarCodes mają ograniczenia i wymagania dotyczące formatu wartości wejściowej. Gdy nie uda się wygenerować kodu kreskowego, aplikacja wyświetla wyjątek IronBarcode, jak pokazano powyżej. Proszę zapoznać się z odpowiednimi szczegółowymi 1D oraz 2D dotyczącymi formatowania dla każdego typu kodu kreskowego.

Aby przetestować powyższe przykłady (Skanner kodów kreskowych na pulpit oraz Generator kodów kreskowych na pulpit), proszę pobrać ten przykładowy projekt.

Często Zadawane Pytania

Co to jest .NET MAUI?

.NET MAUI to wieloplatformowy framework do tworzenia natywnych aplikacji mobilnych i desktopowych przy uzyciu C# i XAML. Pozwala deweloperom na budowanie aplikacji dla Android, iOS, macOS i Windows w oparciu o jedną baze kodu.

Jak mozna wykorzystac IronBarcode w aplikacji .NET MAUI?

IronBarcode mozna zintegrowac z aplikacja .NET MAUI, aby umozliwic funkcje generowania i skanowania kodow kreskowych. Zapewnia prosty sposob tworzenia i czytania kodow kreskowych na wielu platformach desktopowych.

Jakie rodzaje kodów kreskowych może generować IronBarcode?

IronBarcode wspiera generowanie szerokiej gamy formatow kodow kreskowych, w tym QR kodow, Code 128, Code 39, UPC, EAN i wielu innych, co czyni go wszechstronnym dla potrzeb kazdej aplikacji desktopowej.

Czy mozliwe jest skanowanie kodow kreskowych przy uzyciu aplikacji desktopowej zbudowanej z IronBarcode?

Tak, IronBarcode mozna uzywac do skanowania kodow kreskowych w aplikacjach desktopowych, umożliwiajac uzytkownikom szybkie i efektywne dekodowanie informacji z kodow kreskowych poprzez interfejs aplikacji.

Jakie sa zalety stosowania IronBarcode do aplikacji do kodow kreskowych?

IronBarcode oferuje wysoka dokladnosc, szybkosc i latwosc uzytkowania. Integruje sie plynnie z .NET MAUI, dostarczajac kompleksowego wsparcia dla generowania i skanowania kodow kreskowych w aplikacjach desktopowych.

Czy IronBarcode moze obsługiwać duze ilosci danych kodow kreskowych?

Tak, IronBarcode jest zaprojektowany do efektywnego przetwarzania duzych ilosci danych kodow kreskowych, co czyni go odpowiednim dla aplikacji, ktore wymagaja obslugi intensywnych zadan dotyczacych kodow kreskowych.

Czy potrzebuje oddzielnej biblioteki do skanowania i generowania kodow kreskowych?

Nie, IronBarcode dostarcza zarowno funkcjonalnosci skanowania, jak i generowania kodow kreskowych w ramach jednej biblioteki, co upraszcza proces rozwoju aplikacji desktopowych.

Jakie sa wymagania systemowe dla uzywania IronBarcode z .NET MAUI?

IronBarcode wymaga srodowiska .NET kompatybilnego z .NET MAUI. Obsługuje Windows, macOS i inne platformy, na ktorych aplikacje .NET MAUI moga dzialac.

Jak IronBarcode zapewnia dokladnosc kodow kreskowych?

IronBarcode wykorzystuje zaawansowane algorytmy, aby zapewnic wysoka precyzje zarowno w generowaniu, jak i skanowaniu kodow kreskowych, zmniejszajac prawdopodobienstwo bledow w kodowaniu lub dekodowaniu danych kodow kreskowych.

Czy IronBarcode mozna uzywac zarowno do projektow komercyjnych, jak i osobistych?

Tak, IronBarcode mozna uzywac zarowno do projektow komercyjnych, jak i osobistych, oferujac elastyczne opcje licencjonowania, aby dopasowac sie do roznych wymagan projektowych.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podręczników.

...
Czytaj więcej

Gotowy, aby rozpocząć?

Nuget Downloads 2,422,100Wersja:2026.9właśnie wydany

Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta
Biblioteka C# NuGet dla plików PDF
Zainstaluj za pomocą NuGet

Wersja: 2026.9

PM > Install-Package BarCode
nuget.org/packages/BarCode/
  1. W Eksploratorze Rozwiązań, kliknij prawym przyciskiem Myszy na Odwołania, Zarządzaj pakietami NuGet
  2. Wybierz Przeglądaj i wyszukaj "IronBarCode"
  3. Wybierz pakiet i zainstaluj
DLL PDF dla C#
Pobierz DLL

Wersja: 2026.9

  1. Pobierz i rozpakuj IronBarCode do lokalizacji, takiej jak ~/Libs w katalogu Twojego rozwiązania
  2. W Eksploratorze Rozwiązań Visual Studio kliknij prawym przyciskiem Referencje. Wybierz Przeglądaj, "IronBarCode.dll"

Licencje od $999

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Zarezerwuj swoje darmowe Demo na żywo
Booking Badge

Zaufane przez miliony inżynierów na całym świecie

Logotypy klientów Iron Software
Otrzymaj swoje Konsultacja Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta