2011年2月26日 星期六

產生條碼

感謝 Brad Barnhill 及他post的文章 (Thanks to Barnhill, Brad)

Barnhill 撰寫了產生條碼的DLL函式庫,讓我們可以快速地產生需要的條碼,這個已經困擾我十幾年的需求。

以下產生預設是128碼,可同時包含英文與數字,但為了簡化程式,只能輸入最多24個英文字或46個數字。

 

1. 首先加入參考 BarcodeLib.dll ,如下圖

 


 

2. 照例布置所需要的物件如下圖


最下方是一個picturebox1

 

3. 程式如下

一開始先imports函示庫

 

Imports BarcodeLib

 

 

  Dim b As BarcodeLib.Barcode = New BarcodeLib.Barcode()

//以下這幾行程式便可產生條碼圖形

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim type As BarcodeLib.TYPE = BarcodeLib.TYPE.CODE128
        b.IncludeLabel = True
        Try
            PictureBox1.Image = b.Encode(type, TextBox1.Text.Trim)
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try


    End Sub

 

 //條碼存檔

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim sfd As New SaveFileDialog
        sfd.Filter = "BMP (*.bmp)|*.bmp|GIF (*.gif)|*.gif|JPG (*.jpg)|*.jpg|PNG (*.png)|*.png|TIFF (*.tif)|*.tif"
        sfd.FilterIndex = 2
        sfd.AddExtension = True
        If (sfd.ShowDialog = DialogResult.OK) Then
            Dim savetype As BarcodeLib.SaveTypes = SaveTypes.UNSPECIFIED
            Select Case (sfd.FilterIndex)
                Case 1
                    savetype = BarcodeLib.SaveTypes.BMP

                Case 2
                    savetype = BarcodeLib.SaveTypes.GIF
                Case 3
                    savetype = BarcodeLib.SaveTypes.JPG
                Case 4
                    savetype = BarcodeLib.SaveTypes.PNG
                Case 5
                    savetype = BarcodeLib.SaveTypes.TIFF
            End Select
            b.SaveImage(sfd.FileName, savetype)
        End If

 

    End Sub

 

 

通常產生的條碼會需要列印出來,此時加入PrintDocument及PrintPreviewDialog控制項,windows form加入一個預覽列印的按鈕Button3,接著再加入以下程式碼

 

  'printdocument包含所有列印所需要的資訊,
    Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
        e.Graphics.DrawImage(Me.PictureBox1.Image, 0, 0)
        e.Graphics.PageUnit = GraphicsUnit.Inch

    End Sub


    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        PrintPreviewDialog1.Document = PrintDocument1 'PrintPreviewDialog associate with PrintDocument.
        PrintPreviewDialog1.ShowDialog() 'open the print preview

    End Sub

完成後執行預覽列印的畫面如下:

 


2011年2月25日 星期五

vb.net列印

最近因為計畫的關係,花了些時間整理平常上課比較不會特別教的內容,

例如條碼的產生, 列印的問題, 我將.VB.NET列印的範例整理如下:

首先先產生相關物件如下圖


 

 'printdocument包含所有列印所需要的資訊,
    Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage

        e.Graphics.DrawString(Me.TextBox1.Text, TextBox1.Font, Brushes.Black, 100, 100)
        e.Graphics.PageUnit = GraphicsUnit.Inch


    End Sub


    '列印按鈕
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        PrintDialog1.Document = PrintDocument1 'PrintDialog associate with PrintDocument.

        If PrintDialog1.ShowDialog() = DialogResult.OK Then

            PrintDocument1.Print()

        End If

    End Sub

    '預覽列印按鈕
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        PrintPreviewDialog1.Document = PrintDocument1 'PrintPreviewDialog associate with PrintDocument.
        PrintPreviewDialog1.ShowDialog() 'open the print preview

    End Sub