قم بإنشاء وعرض صورة الرمز الشريطي في WPF

يحتوي الرمز الشريطي على معلومات حول منتج أو شركة ، يتم تمثيلها بصريًا في نموذج يمكن قراءته آليًا. تستخدم الباركود على نطاق واسع لتتبع الشحنات وإدارة المخزون. يمكننا بسهولة إنشاء أنواع مختلفة من الرموز الشريطية في تطبيقات WPF. في هذه المقالة ، سوف نتعلم كيفية إنشاء وعرض صورة الباركود في تطبيق WPF. بعد اتباع الخطوات المذكورة ، سيكون لدينا مولد الباركود WPF الخاص بنا في C#. فلنبدأ.

يجب أن تغطي المقالة المواضيع التالية:

  1. ميزات مولد الباركود WPF
  2. C# Barcode Generator API
  3. خطوات إنشاء مولد الرمز الشريطي لـ WPF
  4. إنشاء رمز شريطي بخيارات إضافية
  5. Demo WPF Barcode Generator
  6. رمز مصدر التنزيل

ميزات مولد الباركود WPF

سيحتوي مُنشئ الباركود WPF الخاص بنا على الميزات التالية.

  1. قم بإنشاء الأنواع التالية من رموز الرموز الشريطية:
    • كود 128
    • الكود 11
    • الكود 39
    • ريال قطري
    • مصفوفة البيانات
    • EAN13
    • EAN8
    • ITF14
    • PDF417
  2. احفظ صورة الرمز الشريطي التي تم إنشاؤها بالتنسيقات التالية:
  3. معاينة صورة الباركود التي تم إنشاؤها.

C# Barcode Generator API

سنستخدم Aspose.BarCode for .NET API لإنشاء صور الباركود ومعاينتها في تطبيق WPF. إنها واجهة برمجة تطبيقات غنية بالميزات تتيح لك إنشاء مجموعة كبيرة من أنواع الرموز الشريطية ومسحها ضوئيًا وقراءتها. علاوة على ذلك ، فإنه يسمح بمعالجة مظهر الرموز الشريطية التي تم إنشاؤها مثل لون الخلفية ولون الشريط وزاوية الدوران والبعد x وجودة الصورة والدقة والتعليقات والحجم وغير ذلك الكثير.

خطوات إنشاء مولد الباركود WPF

يمكننا إنشاء وعرض صورة الباركود في تطبيق WPF باتباع الخطوات الواردة أدناه:

  • أولاً ، قم بإنشاء مشروع جديد وحدد قالب مشروع تطبيق WPF.
Select the project template.
  • بعد ذلك ، أدخل اسم المشروع مثل “BarcodeGen”.

  • ثم حدد .NET framework ثم اختر الإنشاء.

  • بعد ذلك ، افتح NuGet Package Manager وقم بتثبيت حزمة Aspose.BarCode for .NET.

قم بتثبيت Aspose.BarCode لـ .NET

قم بتثبيت Aspose.BarCode لـ .NET

  • ثم قم بإضافة فئة جديدة Barcode.cs لتعريف الباركود.
public class Barcode
{
    public string? Text { get; set; }

    public BaseEncodeType? BarcodeType { get; set; }

    public BarCodeImageFormat ImageType { get; set; }
}
  • بعد ذلك ، افتح MainWindow.xaml وأضف عناصر التحكم المطلوبة كما هو موضح أدناه:
أضف الضوابط المطلوبة

أضف الضوابط المطلوبة

يمكنك أيضًا استبدال محتوى MainWindow.xaml بالنص التالي.

<Window x:Class="BarcodeGen.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:BarcodeGen"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">

    <Grid Width="800" Height="384">
        <Grid.RowDefinitions>
            <RowDefinition Height="191*"/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <Label Content="Select Barcode Type:" HorizontalAlignment="Left" Margin="10,16,0,0" VerticalAlignment="Top" FontSize="14" FontWeight="Bold"/>
        <ComboBox x:Name="comboBarcodeType" HorizontalAlignment="Left" Margin="10,47,0,305" Width="273" Text="Select Barcode Type" IsReadOnly="True" SelectedIndex="-1" FontSize="14" Height="30">
            <ComboBoxItem Content="Code128"></ComboBoxItem>
            <ComboBoxItem Content="Code11"></ComboBoxItem>
            <ComboBoxItem Content="Code32"></ComboBoxItem>
            <ComboBoxItem Content="QR"></ComboBoxItem>
            <ComboBoxItem Content="DataMatrix"></ComboBoxItem>
            <ComboBoxItem Content="EAN13"></ComboBoxItem>
            <ComboBoxItem Content="EAN8"></ComboBoxItem>
            <ComboBoxItem Content="ITF14"></ComboBoxItem>
            <ComboBoxItem Content="PDF417"></ComboBoxItem>
        </ComboBox>

        <Button Name="btnGenerate" Click="btnGenerate_Click" Content="Generate Barcode" HorizontalAlignment="Left" Margin="10,346,0,0" VerticalAlignment="Top" Height="28" Width="273" FontSize="14" FontWeight="Bold"/>
        <Label Content="Enter Your Text:" HorizontalAlignment="Left" Margin="10,92,0,0" VerticalAlignment="Top" FontSize="14" FontWeight="Bold"/>
        <TextBox Name="tbCodeText" TextWrapping="Wrap" Margin="10,123,517,134" Width="273" Height="125"/>
        <Label Content="Select Image Format:" HorizontalAlignment="Left" Margin="10,253,0,0" VerticalAlignment="Top" FontSize="14" FontWeight="Bold"/>
        <RadioButton Name="rbPng" Content="Png" GroupName="rbImageType" Margin="10,285,739,77" Width="51" Height="20" FontSize="14" IsChecked="True"/>
        <RadioButton Name="rbJpg" Content="Jpeg" GroupName="rbImageType" Margin="121,285,628,77" Width="51" Height="20" FontSize="14"/>
        <RadioButton Name="rbBmp" Content="Bmp" GroupName="rbImageType" Margin="232,285,517,77" Width="51" Height="20" FontSize="14"/>
        <CheckBox Name="cbGenerateWithOptions" Height="20" Margin="10,321,517,41" Content="Generate with Options" />
        <GroupBox Header="View Generated Barcode" Margin="317,0,22,0" FontSize="14" FontWeight="Bold">
            <Image Name="imgDynamic" Margin="6,-6,7,6" Stretch="None"  />
        </GroupBox>
    </Grid>
</Window>
  • بعد ذلك ، افتح فئة MainWindow.xaml.cs وأضف حدث btnGenerateClick لمعالجة إجراء النقر لزر إنشاء الرمز الشريطي.
private void btnGenerate_Click(object sender, RoutedEventArgs e)
{
    // تعيين الافتراضي كـ Png
    var imageType = "Png";

    // احصل على تنسيق الصورة الذي حدده المستخدم
    if(rbPng.IsChecked == true)
    {
        imageType = rbPng.Content.ToString();
    }
    else if(rbBmp.IsChecked == true)
    {
        imageType = rbBmp.Content.ToString();
    }
    else if(rbJpg.IsChecked == true)
    {
        imageType = rbJpg.Content.ToString();
    }

    // الحصول على تنسيق الصورة من enum
    var imageFormat = (BarCodeImageFormat)Enum.Parse(typeof(BarCodeImageFormat), imageType.ToString());

    // تعيين الافتراضي على Code128
    var encodeType = EncodeTypes.Code128;

    // احصل على نوع الباركود المحدد للمستخدم
    if (!string.IsNullOrEmpty(comboBarcodeType.Text))
    {
        switch (comboBarcodeType.Text)
        {
            case "Code128":
                encodeType = EncodeTypes.Code128;
                break;

            case "ITF14":
                encodeType = EncodeTypes.ITF14;
                break;

            case "EAN13":
                encodeType = EncodeTypes.EAN13;
                break;

            case "Datamatrix":
                encodeType = EncodeTypes.DataMatrix;
                break;

            case "Code32":
                encodeType = EncodeTypes.Code32;
                break;

            case "Code11":
                encodeType = EncodeTypes.Code11;
                break;

            case "PDF417":
                encodeType = EncodeTypes.Pdf417;
                break;

            case "EAN8":
                encodeType = EncodeTypes.EAN8;
                break;

            case "QR":
                encodeType = EncodeTypes.QR;
                break;
        }
    }

    // تنشيط كائن الرمز الشريطي
    Barcode barcode = new Barcode();
    barcode.Text = tbCodeText.Text;
    barcode.BarcodeType = encodeType;
    barcode.ImageType = imageFormat;

    try
    {
        string imagePath = "";

        if (cbGenerateWithOptions.IsChecked == true)
        {
            // قم بإنشاء رمز شريطي بخيارات إضافية واحصل على مسار الصورة
            imagePath = GenerateBarcodeWithOptions(barcode);
        }
        else
        {
            // إنشاء رمز شريطي والحصول على مسار الصورة
            imagePath = GenerateBarcode(barcode);
        }

        // اعرض الصورة
        Uri fileUri = new Uri(Path.GetFullPath(imagePath));
        imgDynamic.Source = new BitmapImage(fileUri);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}
  • بعد ذلك ، أضف وظيفة لإنشاء رمز شريطي.
private string GenerateBarcode(Barcode barcode)
{
    // مسار الصورة
    string imagePath = comboBarcodeType.Text + "." + barcode.ImageType;

    // بدء مولد الباركود
    BarcodeGenerator generator = new BarcodeGenerator(barcode.BarcodeType, barcode.Text);

    // احفظ الصورة
    generator.Save(imagePath, barcode.ImageType);

    return imagePath;
}
  • أخيرًا ، قم بتشغيل التطبيق.

إنشاء رمز شريطي بخيارات إضافية

يمكننا أيضًا إنشاء رموز شريطية بخيارات إضافية خاصة بأنواع الباركود. في منشئ الباركود WPF ، أضفنا مربع اختيار لإنشاء رمز شريطي به خيارات. ستستدعي الوظيفة التالية التي تحدد خيارات إضافية لأنواع الباركود المختلفة.

private string GenerateBarcodeWithOptions(Barcode barcode)
{
    // مسار الصورة
    string imagePath = comboBarcodeType.Text + "." + barcode.ImageType;

    // بدء مولد الباركود
    BarcodeGenerator generator = new BarcodeGenerator(barcode.BarcodeType, barcode.Text);

    if(barcode.BarcodeType == EncodeTypes.QR)
    {
        generator.Parameters.Barcode.XDimension.Pixels = 4;
        //تعيين الإصدار التلقائي
        generator.Parameters.Barcode.QR.QrVersion = QRVersion.Auto;
        //قم بتعيين نوع تشفير QR التلقائي
        generator.Parameters.Barcode.QR.QrEncodeType = QREncodeType.Auto;
    } 
    else if(barcode.BarcodeType == EncodeTypes.Pdf417)
    {
        generator.Parameters.Barcode.XDimension.Pixels = 2;
        generator.Parameters.Barcode.Pdf417.Columns = 3;
    }
    else if(barcode.BarcodeType == EncodeTypes.DataMatrix)
    {
        //اضبط DataMatrix ECC على 140
        generator.Parameters.Barcode.DataMatrix.DataMatrixEcc = DataMatrixEccType.Ecc200;
    }
    else if(barcode.BarcodeType == EncodeTypes.Code32)
    {
        generator.Parameters.Barcode.XDimension.Millimeters = 1f;
    }
    else
    {
        generator.Parameters.Barcode.XDimension.Pixels = 2;
        //تعيين BarHeight 40
        generator.Parameters.Barcode.BarHeight.Pixels = 40;
    }

    // احفظ الصورة
    generator.Save(imagePath, barcode.ImageType);

    return imagePath;
}

يمكنك قراءة المزيد حول Generation Specifics for Barcode Types في الوثائق.

نسخة تجريبية من WPF Barcode Generator

فيما يلي عرض توضيحي لتطبيق WPF Barcode Generator الذي أنشأناه للتو.

نسخة تجريبية من WPF Barcode Generator

نسخة تجريبية من WPF Barcode Generator

تحميل شفرة المصدر

يمكنك تنزيل الكود المصدري الكامل لتطبيق WPF Barcode Generator من GitHub.

احصل على رخصة مجانية

يمكنك الحصول على ترخيص مؤقت مجاني لتجربة المكتبة دون قيود التقييم.

استنتاج

في هذه المقالة ، تعلمنا كيفية إنشاء أنواع مختلفة من الرموز الشريطية في تطبيق WPF. لقد رأينا أيضًا كيفية معاينة صورة الباركود التي تم إنشاؤها برمجيًا. بالإضافة إلى ذلك ، يمكنك معرفة المزيد حول Aspose.BarCode لـ .NET API باستخدام التوثيق. في حالة وجود أي غموض ، لا تتردد في الاتصال بنا على المنتدى.

أنظر أيضا