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

This article was translated from English: Does it need improvement?
Translated
View the article in English

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 wieloplatformowe 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 artykule 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 zostać zastąpiony zawartością pokazaną 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 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. Obsługa zdarzeń OnScanButtonClicked jest przypisana do przycisku skanowania w interfejsie użytkownika.

PickPhotoAsync jest najpierw używany, aby pozwolić użytkownikom wybrać kod kreskowy do załadowania, a następnie OpenReadAsync służy do uzyskania dostępu do strumienia plików. Dane obrazu są natychmiast kopiowane do MemoryStream za pomocą CopyToAsync. Pozwala to na jednoczesne wykorzystanie danych do wyświetlania obrazu na ekranie oraz do skanowania kodu kreskowego metodą Read.

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;
            }
        }
    }
}
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;
            }
        }
    }
}
Imports IronBarCode

Namespace MauiApp1
    Partial Public Class MainPage
        Inherits ContentPage

        Public Sub New()
            InitializeComponent()
            ' Your license key is set here
            IronBarCode.License.LicenseKey = "YOUR_KEY"
        End Sub

        Private Async Sub OnScanButtonClicked(ByVal sender As Object, ByVal e As EventArgs)
            Try
                Dim fileResult = Await MediaPicker.Default.PickPhotoAsync()

                If fileResult IsNot Nothing Then
                    ' 1. Copy the file content into a byte array or MemoryStream immediately
                    ' This ensures we have the data in memory before the file closes
                    Dim imageBytes As Byte()
                    Using stream = Await fileResult.OpenReadAsync(), memoryStream = New MemoryStream()
                        Await stream.CopyToAsync(memoryStream)
                        imageBytes = memoryStream.ToArray()
                    End Using

                    ' 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(Function() New MemoryStream(imageBytes))

                    ' 3. Process the Barcode
                    ' We give IronBarcode its OWN fresh stream from the same bytes
                    Using processingStream = New MemoryStream(imageBytes)
                        ' 4. Read the barcode with Read
                        Dim results = BarcodeReader.Read(processingStream)

                        ' 5. Display barcode results
                        If results IsNot Nothing AndAlso results.Count > 0 Then
                            ' 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
                        End If
                    End Using
                End If
            Catch ex As Exception
                ' Display any exception thrown in runtime
                ResultLabel.Text = $"Error: {ex.Message}"
                ResultLabel.TextColor = Colors.Red
            End Try
        End Sub
    End Class
End Namespace
$vbLabelText   $csharpLabel

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 należy zastąpić treścią przedstawioną 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 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. Obsługa zdarzeń OnGenerateButtonClicked jest przypisana do przycisku generowania w interfejsie użytkownika.

Wejście użytkownika jest sprawdzane, aby upewnić się, że tekst jest obecny i wybrany został typ, po czym wybór jest odwzorowywany na odpowiedni BarcodeEncoding. BarcodeWriter.CreateBarcode jest używany do generowania obrazu, zmiany jego rozmiaru oraz konwersji do binarnych danych JPEG. Obraz zostaje następnie wyświetlony na ekranie za pomocą MemoryStream.

Na końcu wygenerowany plik kodu kreskowego jest zapisywany bezpośrednio na Pulpicie użytkownika za pomocą File.WriteAllBytes, a etykieta statusu 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;
            }
        }
    }
}
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;
            }
        }
    }
}
Imports IronBarCode
Imports System.IO ' Required for saving files

Namespace MauiApp1
    Public Partial Class MainPage
        Inherits ContentPage

        Public Sub New()
            InitializeComponent()
            IronBarCode.License.LicenseKey = "YOUR-KEY"

            ' Set default selection
            BarcodeTypePicker.SelectedIndex = 0
        End Sub

        Private Sub OnGenerateButtonClicked(sender As Object, e As EventArgs)
            Try
                ' 1. Get and Validate Input
                Dim text As String = BarcodeEntry.Text

                If String.IsNullOrWhiteSpace(text) Then
                    StatusLabel.Text = "Error: Please enter text."
                    StatusLabel.TextColor = Colors.Red
                    Return
                End If

                If BarcodeTypePicker.SelectedIndex = -1 Then
                    StatusLabel.Text = "Error: Please select a type."
                    StatusLabel.TextColor = Colors.Red
                    Return
                End If

                ' 2. Determine Encoding Type
                Dim selectedType As String = BarcodeTypePicker.SelectedItem.ToString()
                Dim encoding As BarcodeEncoding = BarcodeEncoding.QRCode

                Select Case selectedType
                    Case "QRCode"
                        encoding = BarcodeEncoding.QRCode
                    Case "Code128"
                        encoding = BarcodeEncoding.Code128
                    Case "EAN13"
                        encoding = BarcodeEncoding.EAN13
                    Case "Code39"
                        encoding = BarcodeEncoding.Code39
                    Case "PDF417"
                        encoding = BarcodeEncoding.PDF417
                End Select

                ' 3. Generate Barcode
                Dim barcode = BarcodeWriter.CreateBarcode(text, encoding)
                barcode.ResizeTo(400, 200) ' Optional resizing

                ' 4. Convert to Bytes (JPEG)
                Dim bytes = barcode.ToJpegBinaryData()

                ' 5. Update UI
                GeneratedImage.Source = ImageSource.FromStream(Function() New MemoryStream(bytes))

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

                File.WriteAllBytes(fullPath, bytes)

                ' 7. Show Success Message
                StatusLabel.Text = $"Saved to Desktop:{Environment.NewLine}{fileName}"
                StatusLabel.TextColor = Colors.Green
            Catch ex As Exception
                StatusLabel.Text = $"Error: {ex.Message}"
                StatusLabel.TextColor = Colors.Red
            End Try
        End Sub
    End Class
End Namespace
$vbLabelText   $csharpLabel

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. W sprawie formatowania poszczególnych typów BARCODE-ów proszę zapoznać się z odpowiednimi szczegółowymi instrukcjami dotyczącymi BARCODE-ów 1D i 2D.

Aby przetestować powyższe przykłady (Desktop BarCode Scanner i Desktop BarCode Generator), pobierz 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, umozliwiajac 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 obslugiwac 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ę...

Czytaj więcej
Gotowy, aby rozpocząć?
Nuget Pliki do pobrania 2,145,441 | Wersja: 2026.4 just released
Still Scrolling Icon

Wciąż przewijasz?

Czy chcesz szybko dowodu? PM > Install-Package BarCode
uruchom przykład zobacz, jak twoje ciągi zamieniają się w kody kreskowe.