LEADTOOLSバーコード

フレームを表示

プロジェクトを開始するために、以下の手順をとります:

  1. Visual Studio .NETを開始します。

  2. ファイル->新規作成->プロジェクトを選択します... メニューから。

  3. [新しいプロジェクト]ダイアログボックスの[プロジェクトの種類]リストから[Visual C#プロジェクト]または[Visual Basicプロジェクト]を選択し、[テンプレート]リストで[Windowsアプリケーション](Visual Studio 2010の場合は[Windowsフォームアプリケーション])を選択します。

  4. [プロジェクト名]フィールドに「バーコードの読み取り」と入力して、[OK]をクリックしま。必要であれば、プロジェクトの新しい場所を入力するか、ブラウズボタンを用いてディレクトリを選択します、そして、OKを選択します。

  5. 「ソリューションエクスプローラー」ウィンドウでは、「参照」フォルダを右クリックします、そして、コンテキストメニューから「参照の追加...」を選択します。参照の追加ダイアログボックスでは、「.NET」タブを選択して、「C:\LEADTOOLS 19\Bin\DotNet\Win32」フォルダ(または、.NET 4を使うことになるならば「C:\LEADTOOLS 19\Bin\DotNet4\Win32」)に閲覧して、以下のDLLを選択します:

    • Leadtools.dll
    • Leadtools.Forms.dll
    • Leadtools.Barcode.dll
    • Leadtools.Barcode.OneD.dll
    • Leadtools.Codecs.dll
    • Leadtools.Codecs.Tif.dll
    • Leadtools.Codecs.Fax.dll

    [選択]をクリックしてから[OK]をクリッし、上記のDLLをアプリケーションに追加します。

  6. Form1のコードビューに切り替えて(ソリューションエクスプローラでForm1を右クリックして[コードの表示]をクリックする)、ファイルの先頭に以下の行を追加します。

    [Visual Basic]

    
                 Imports Leadtools
                 Imports Leadtools.Codecs
                 Imports Leadtools.Forms
                 Imports Leadtools.Barcode
                 
    

    [C#]

    
                 using Leadtools;
                 using Leadtools.Codecs;
                 using Leadtools.Forms;
                 using Leadtools.Barcode;
                 
    
  7. Form1で2つのボタンをドラッグ&ドロップします。以下のプロパティを変更します:

    プロパティ
    名前 loadImageButton
    テキスト ロードイメージ
    名前 readBarcodesButton
    テキスト 読まれたバーコード
  8. Form1に以下のプライベート変数を追加します

    [Visual Basic]

    
                 Private barcodeEngineInstance As BarcodeEngine ' The barcode engine
                 Private theImage As RasterImage ' The current loaded image
                 Private imageFileName As String ' Last file name we loaded, this is used in the "Writing Barcodes" tutorial
                 
    

    [C#]

    
                 private BarcodeEngine barcodeEngineInstance; // The barcode engine
                 private RasterImage theImage; // The current loaded image
                 private string imageFileName; // Last file name we loaded, this is used in the "Writing Barcodes" tutorial
                 
    
  9. Form1に以下の初期化codeを追加します

    [Visual Basic]

    
                 Protected Overrides Sub OnLoad(ByVal e As EventArgs)
                    ' Use the developer and license file by LEADTOOLS
                    Dim MY_LICENSE_FILE As String = "d:\temp\TestLic.lic"
                    Dim MY_DEVELOPER_KEY As String = "xyz123abc"
                    RasterSupport.SetLicense(MY_LICENSE_FILE, MY_DEVELOPER_KEY)
                
                    ' Create the BarcodeEngine instance
                    barcodeEngineInstance = New BarcodeEngine()
                
                    MyBase.OnLoad(e)
                 End Sub
                 
    

    [C#]

    
                 protected override void OnLoad(EventArgs e)
                 {
                    // Replace the keys with unlock support string provided by LEADTOOLS, or use the evaluation kernel
                
                    // Unlock reading 1D barcodes
                    string MY_LICENSE_FILE = "d:\\temp\\TestLic.lic";
                    string MY_DEVELOPER_KEY = "xyz123abc";
                    RasterSupport.SetLicense(MY_LICENSE_FILE, MY_DEVELOPER_KEY);
                
                    // Create the BarcodeEngine instance
                    barcodeEngineInstance = new BarcodeEngine();
                
                    base.OnLoad(e);
                 }
                 
    
  10. Form1に以下のクリーンアップcodeを追加します

    [Visual Basic]

    
                 Protected Overrides Sub OnFormClosed(ByVal e As FormClosedEventArgs)
                    ' Delete our resources
                
                    If Not theImage Is Nothing Then
                       theImage.Dispose()
                    End If
                
                    MyBase.OnFormClosed(e)
                 End Sub
                 
    

    [C#]

    
                 protected override void OnFormClosed(FormClosedEventArgs e)
                 {
                    // Delete our resources
                
                    if(theImage != null)
                    {
                       theImage.Dispose();
                    }
                
                    base.OnFormClosed(e);
                 }
                 
    
  11. loadImageButtonクリック手順に以下のcodeを追加します:

    [Visual Basic]

    
                 Private Sub loadImageButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles loadImageButton.Click
                    Dim fileName As String = "C:\Users\Public\Documents\LEADTOOLS Images\Barcode1.tif"
                    ' Or comment out the following to load your own file
                    ' Using dlg As New OpenFileDialog
                    '    If dlg.ShowDialog(Me) = System.Windows.Forms.DialogResult.OK Then
                    '       fileName = dlg.FileName
                    '    Else
                    '       Return
                    '    End If
                    ' End Using
                
                    ' Load the image
                    Using codecs As New RasterCodecs
                       Dim newImage As RasterImage = codecs.Load(fileName, 0, CodecsLoadByteOrder.BgrOrGray, 1, 1)
                
                       ' Delete old image if any
                       If Not theImage Is Nothing Then
                          theImage.Dispose()
                       End If
                
                       theImage = newImage
                       imageFileName = fileName
                    End Using
                 End Sub
                 
    

    [C#]

    
                 private void loadImageButton_Click(object sender, EventArgs e)
                 {
                    string fileName = @"C:\Users\Public\Documents\LEADTOOLS Images\Barcode1.tif";
                    // Or comment out the following to load your own file
                    //using(OpenFileDialog dlg = new OpenFileDialog())
                    //{
                    //   if(dlg.ShowDialog(this) == System.Windows.Forms.DialogResult.OK)
                    //   {
                    //      fileName = dlg.FileName;
                    //   }
                    //   else
                    //   {
                    //      return;
                    //   }
                    //}
                
                    // Load the image
                    using(RasterCodecs codecs = new RasterCodecs())
                    {
                       string fileName = @"C:\Users\Public\Documents\LEADTOOLS Images\Barcode1.tif";
                       RasterImage newImage = codecs.Load(fileName, 0, CodecsLoadByteOrder.BgrOrGray, 1, 1);
                
                       // Delete old image if any
                       if(theImage != null)
                       {
                          theImage.Dispose();
                       }
                
                       theImage = newImage;
                       imageFileName = fileName;
                    }
                 }
                 
    
  12. readBarcodesButtonクリック手順に以下のcodeを追加します:

    [Visual Basic]

    
                 Private Sub readBarcodesButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles readBarcodesButton.Click
                    If theImage Is Nothing
                       MessageBox.Show("Load an image first")
                       Return
                    End If
                
                    Try
                       ' Read all the barcodes
                       ' The first parameter is the image from which to read the barcodes.
                       ' The second parameter is the search rectangle. Pass an empty rectangle to indicate the entire image.
                       ' The third parameter is the maximum number of barcodes to read. Pass 0 for all found in the image.
                       ' The last parameter is an array of the BarcodeSymbology we are interested in. Pass null (or Nothing)
                       ' to indicate that we do not care, and want all available barcodes to be read (found in the image and supported by
                       ' the current unlock support mechanism)
                       Dim dataArray() As BarcodeData = barcodeEngineInstance.Reader.ReadBarcodes(theImage, LogicalRectangle.Empty, 0, Nothing)
                
                       Dim sb As New StringBuilder()
                       sb.AppendFormat("{0} barcode(s) found", dataArray.Length)
                       sb.AppendLine()
                
                       For i As Integer = 0 To dataArray.Length - 1
                          Dim data As BarcodeData = dataArray(i)
                
                          sb.AppendFormat("Symbology: {0}, Location: {1}, Data: {2}", data.Symbology.ToString(), data.Bounds.ToString(), data.Value)
                          sb.AppendLine()
                       Next
                
                       MessageBox.Show(sb.ToString())
                    Catch ex As Exception
                       MessageBox.Show(ex.Message)
                    End Try
                 End Sub
                 
    

    [C#]

    
                 private void readBarcodesButton_Click(object sender, EventArgs e)
                 {
                    if(theImage == null)
                    {
                       MessageBox.Show("Load an image first");
                       return;
                    }
                
                    try
                    {
                       // Read all the barcodes
                       // The first parameter is the image we want to read the barcodes from
                       // The second parameter is the search rectangle. Pass an empty rectangle to indicate the entire image.
                       // The third parameter is the maximum number of barcodes to read. Pass 0 for all barcodes found in the image.
                       // Last parameter is an array of the BarcodeSymbology we are interested in. Pass null (or Nothing)
                       // to indicate that we do not care, and want all barcodes available to be read(that have been found in the image and are supported by
                       // the current unlock support mechanism)
                       BarcodeData[] dataArray = barcodeEngineInstance.Reader.ReadBarcodes(theImage, LogicalRectangle.Empty, 0, null);
                
                       StringBuilder sb = new StringBuilder();
                       sb.AppendFormat("{0} barcode(s) found", dataArray.Length);
                       sb.AppendLine();
                
                       for(int i = 0; i < dataArray.Length; i++)
                       {
                          BarcodeData data = dataArray[i];
                
                          sb.AppendFormat("Symbology: {0}, Location: {1}, Data: {2}", data.Symbology.ToString(), data.Bounds.ToString(), data.Value);
                          sb.AppendLine();
                       }
                
                       MessageBox.Show(sb.ToString());
                    }
                    catch(Exception ex)
                    {
                       MessageBox.Show(ex.Message);
                    }
                 }
                 
    
  13. プログラムをビルドして実行し、テストします。[画像のロード]をクリックして画像をロードします。[バーコードの読み取り]をクリックすると、1Dバーコードが検索され、読み取られた1Dバーコードが表示されます。