Hasilkan dan Tampilkan Gambar Barcode di WPF

Barcode berisi informasi tentang produk atau perusahaan, yang direpresentasikan secara visual dalam bentuk yang dapat dibaca mesin. Barcode banyak digunakan untuk melacak pengiriman dan manajemen inventaris. Berbagai jenis barcode dapat kita generate dengan mudah di aplikasi WPF. Pada artikel ini, kita akan mempelajari cara membuat dan menampilkan gambar barcode di aplikasi WPF. Setelah mengikuti langkah-langkah yang disebutkan, kami akan memiliki Pembuat Kode Batang WPF kami sendiri di C#. Jadi mari kita mulai.

Artikel tersebut harus mencakup topik-topik berikut:

  1. Fitur Pembuat Kode Batang WPF
  2. API Pembuat Kode Batang C#
  3. Langkah Membuat WPF Barcode Generator
  4. Hasilkan Kode Batang dengan Opsi Tambahan
  5. Penghasil Kode Batang Demo WPF
  6. Unduh Kode Sumber

Fitur Generator Kode Batang WPF

Generator kode batang WPF kami akan memiliki fitur-fitur berikut.

  1. Hasilkan jenis simbologi kode batang berikut:
    • Kode128
    • Kode11
    • Kode39
    • QR
    • Datamatrix
    • EAN13
    • EAN8
    • ITF14
    • PDF417
  2. Simpan gambar barcode yang dihasilkan dalam format berikut:
  3. Pratinjau gambar barcode yang dihasilkan.

API Pembuat Kode Batang C#

Kami akan menggunakan API Aspose.BarCode for .NET untuk membuat gambar barcode dan mempratinjaunya di aplikasi WPF. Ini adalah API kaya fitur yang memungkinkan Anda menghasilkan, memindai, dan membaca berbagai jenis kode batang. Selain itu, memungkinkan untuk memanipulasi tampilan kode batang yang dihasilkan seperti warna latar belakang, warna batang, sudut rotasi, dimensi-x, kualitas gambar, resolusi, keterangan, ukuran, dan banyak lagi.

Langkah-langkah untuk Membuat Pembuat Kode Batang WPF

Kami dapat membuat dan menampilkan gambar barcode di aplikasi WPF dengan mengikuti langkah-langkah berikut:

  • Pertama, buat proyek baru dan pilih template proyek Aplikasi WPF.
  • Selanjutnya, masukkan nama proyek misalnya “BarcodeGen”.

  • Kemudian, pilih .NET framework lalu pilih untuk membuat.

  • Selanjutnya, buka NuGet Package Manager dan instal paket Aspose.BarCode for .NET.

Instal Aspose.BarCode for .NET

Instal Aspose.BarCode for .NET

  • Kemudian, tambahkan kelas baru Barcode.cs untuk menentukan kode batang.
public class Barcode
{
    public string? Text { get; set; }

    public BaseEncodeType? BarcodeType { get; set; }

    public BarCodeImageFormat ImageType { get; set; }
}
  • Selanjutnya, buka MainWindow.xaml dan tambahkan kontrol yang diperlukan seperti yang ditunjukkan di bawah ini:
Tambahkan kontrol yang diperlukan

Tambahkan kontrol yang diperlukan

Anda juga dapat mengganti konten MainWindow.xaml dengan skrip berikut.

<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>
  • Kemudian, buka kelas MainWindow.xaml.cs dan tambahkan event btnGenerateClick untuk menangani aksi klik pada tombol Generate Barcode.
private void btnGenerate_Click(object sender, RoutedEventArgs e)
{
    // Tetapkan default sebagai Png
    var imageType = "Png";

    // Dapatkan format gambar yang dipilih pengguna
    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();
    }

    // Dapatkan format gambar dari enum
    var imageFormat = (BarCodeImageFormat)Enum.Parse(typeof(BarCodeImageFormat), imageType.ToString());

    // Tetapkan default sebagai Code128
    var encodeType = EncodeTypes.Code128;

    // Dapatkan jenis kode batang yang dipilih pengguna
    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;
        }
    }

    // Inisialisasi objek kode batang
    Barcode barcode = new Barcode();
    barcode.Text = tbCodeText.Text;
    barcode.BarcodeType = encodeType;
    barcode.ImageType = imageFormat;

    try
    {
        string imagePath = "";

        if (cbGenerateWithOptions.IsChecked == true)
        {
            // Hasilkan kode batang dengan opsi tambahan dan dapatkan jalur gambar
            imagePath = GenerateBarcodeWithOptions(barcode);
        }
        else
        {
            // Hasilkan kode batang dan dapatkan jalur gambar
            imagePath = GenerateBarcode(barcode);
        }

        // Tampilkan gambar
        Uri fileUri = new Uri(Path.GetFullPath(imagePath));
        imgDynamic.Source = new BitmapImage(fileUri);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}
  • Setelah itu, tambahkan fungsi untuk menghasilkan barcode.
private string GenerateBarcode(Barcode barcode)
{
    // Jalur gambar
    string imagePath = comboBarcodeType.Text + "." + barcode.ImageType;

    // Inisialisasi generator kode batang
    BarcodeGenerator generator = new BarcodeGenerator(barcode.BarcodeType, barcode.Text);

    // Simpan gambar
    generator.Save(imagePath, barcode.ImageType);

    return imagePath;
}
  • Terakhir, jalankan aplikasi.

Hasilkan Barcode dengan Opsi Tambahan

Kami juga dapat membuat kode batang dengan opsi tambahan khusus untuk jenis kode batang. Di pembuat kode batang WPF, kami telah menambahkan kotak centang untuk membuat kode batang dengan opsi. Ini akan memanggil fungsi berikut yang menentukan opsi tambahan untuk jenis kode batang yang berbeda.

private string GenerateBarcodeWithOptions(Barcode barcode)
{
    // Jalur gambar
    string imagePath = comboBarcodeType.Text + "." + barcode.ImageType;

    // Inisialisasi generator kode batang
    BarcodeGenerator generator = new BarcodeGenerator(barcode.BarcodeType, barcode.Text);

    if(barcode.BarcodeType == EncodeTypes.QR)
    {
        generator.Parameters.Barcode.XDimension.Pixels = 4;
        //atur versi Otomatis
        generator.Parameters.Barcode.QR.QrVersion = QRVersion.Auto;
        //Setel jenis enkode QR Otomatis
        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)
    {
        //atur DataMatrix ECC ke 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;
        //atur BarHeight 40
        generator.Parameters.Barcode.BarHeight.Pixels = 40;
    }

    // Simpan gambar
    generator.Save(imagePath, barcode.ImageType);

    return imagePath;
}

Anda dapat membaca lebih lanjut tentang Generation Spesifics for Barcode Types di dokumentasi.

Demo Pembuat Kode Batang WPF

Berikut adalah demonstrasi aplikasi WPF Barcode Generator yang baru saja kita buat.

Demo Pembuat Kode Batang WPF

Demo Pembuat Kode Batang WPF

Unduh Kode Sumber

Anda dapat mengunduh kode sumber lengkap aplikasi WPF Barcode Generator dari GitHub.

Dapatkan Lisensi Gratis

Anda bisa mendapatkan lisensi sementara gratis untuk mencoba perpustakaan tanpa batasan evaluasi.

Kesimpulan

Pada artikel ini, kami telah mempelajari cara membuat berbagai jenis barcode dalam aplikasi WPF. Kami juga telah melihat cara mempratinjau gambar barcode yang dihasilkan secara terprogram. Selain itu, Anda dapat mempelajari lebih lanjut tentang Aspose.BarCode for .NET API menggunakan dokumentasi. Jika ada ambiguitas, jangan ragu untuk menghubungi kami di forum kami.

Lihat juga