翻譯|使用教程|編輯:胡濤|2022-08-17 11:43:54.653|閱讀 350 次
概述:在本文中,我們將學習如何在 WPF 應用程序中生成和顯示條形碼圖像。完成上述步驟后,我們將在 C# 中擁有自己的WPF 條碼生成器。所以讓我們開始吧。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
	
	
 
 
	
我們的 WPF 條碼生成器將具有以下功能。
我們將使用Aspose.BarCode for .NET API 來生成條形碼圖像并在 WPF 應用程序中預覽它們。它是一個功能豐富的 API,可讓您生成、掃描和讀取各種條形碼類型。此外,它允許操縱生成的條形碼的外觀,例如背景顏色、條形顏色、旋轉角度、x 尺寸、圖像質量、分辨率、標題、大小等等。
我們可以按照以下步驟在 WPF 應用程序中生成和顯示條形碼圖像:
	 
 
接下來,輸入項目的名稱,例如“BarcodeGen”。
然后,選擇 .NET 框架,然后選擇創建.
接下來,打開NuGet 包管理器并安裝Aspose.BarCode for .NET包。
	 
 
public class Barcode
{
public string? Text { get; set; }
public BaseEncodeType? BarcodeType { get; set; }
public BarCodeImageFormat ImageType { get; set; }
}
	 
 
您還可以將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>
view rawWPF-Barcode-Generator_MainWindow.xaml hosted with ? by GitHub
然后,打開MainWindow.xaml.cs類并添加btnGenerate_Click事件來處理Generate Barcode按鈕的單擊操作。
private void btnGenerate_Click(object sender, RoutedEventArgs e)
{
// Set default as Png
var imageType = "Png";
// Get the user selected image format
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();
}
// Get image format from enum
var imageFormat = (BarCodeImageFormat)Enum.Parse(typeof(BarCodeImageFormat), imageType.ToString());
// Set default as Code128
var encodeType = EncodeTypes.Code128;
// Get the user selected barcode type
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;
}
}
// Initalize barcode object
Barcode barcode = new Barcode();
barcode.Text = tbCodeText.Text;
barcode.BarcodeType = encodeType;
barcode.ImageType = imageFormat;
try
{
string imagePath = "";
if (cbGenerateWithOptions.IsChecked == true)
{
// Generate barcode with additional options and get the image path
imagePath = GenerateBarcodeWithOptions(barcode);
}
else
{
// Generate barcode and get image path
imagePath = GenerateBarcode(barcode);
}
// Display the image
Uri fileUri = new Uri(Path.GetFullPath(imagePath));
imgDynamic.Source = new BitmapImage(fileUri);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private string GenerateBarcode(Barcode barcode)
{
// Image path
string imagePath = comboBarcodeType.Text + "." + barcode.ImageType;
// Initilize barcode generator
BarcodeGenerator generator = new BarcodeGenerator(barcode.BarcodeType, barcode.Text);
// Save the image
generator.Save(imagePath, barcode.ImageType);
return imagePath;
}
我們還可以生成帶有特定于條形碼類型的附加選項的條形碼。在 WPF 條碼生成器中,我們添加了一個復選框來生成帶有選項的條碼。它將調用以下函數,為不同的條形碼類型指定附加選項。
private string GenerateBarcodeWithOptions(Barcode barcode)
{
// Image path
string imagePath = comboBarcodeType.Text + "." + barcode.ImageType;
// Initilize barcode generator
BarcodeGenerator generator = new BarcodeGenerator(barcode.BarcodeType, barcode.Text);
if(barcode.BarcodeType == EncodeTypes.QR)
{
generator.Parameters.Barcode.XDimension.Pixels = 4;
//set Auto version
generator.Parameters.Barcode.QR.QrVersion = QRVersion.Auto;
//Set Auto QR encode type
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)
{
//set DataMatrix ECC to 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;
//set BarHeight 40
generator.Parameters.Barcode.BarHeight.Pixels = 40;
}
// Save the image
generator.Save(imagePath, barcode.ImageType);
return imagePath;
}
我們還可以生成帶有特定于條形碼類型的附加選項的條形碼。在 WPF 條碼生成器中,我們添加了一個復選框來生成帶有選項的條碼。它將調用以下函數,為不同的條形碼類型指定附加選項。
private string GenerateBarcodeWithOptions(Barcode barcode)
{
// Image path
string imagePath = comboBarcodeType.Text + "." + barcode.ImageType;
// Initilize barcode generator
BarcodeGenerator generator = new BarcodeGenerator(barcode.BarcodeType, barcode.Text);
if(barcode.BarcodeType == EncodeTypes.QR)
{
generator.Parameters.Barcode.XDimension.Pixels = 4;
//set Auto version
generator.Parameters.Barcode.QR.QrVersion = QRVersion.Auto;
//Set Auto QR encode type
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)
{
//set DataMatrix ECC to 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;
//set BarHeight 40
generator.Parameters.Barcode.BarHeight.Pixels = 40;
}
// Save the image
generator.Save(imagePath, barcode.ImageType);
return imagePath;
}
下面是我們剛剛創建的 WPF Barcode Generator 應用程序的演示。
	 
 
歡迎下載|體驗更多Aspose產品
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@ke049m.cn