田草博客

互联网田草博客


网友交流QQ群:11740834 需注明申请加入原因

微信 公众号:ByCAD

邮箱:tiancao1001x126.com
ByCAD,微信公众号
首页 | 普通 | 电脑 | AutoCAD | VB/VB.NET | FLash | 结构 | 建筑 | 电影 | BIM | 规范 | 软件 | ID
-随机-|-分布-
-博客论坛-|-﨣﨤﨧﨨-
-网站导航-|-规范下载-
-BelovedFLash欣赏-

用户登陆
用户:
密码:
 

站点日历
73 2024 - 11 48
     12
3456789
10111213141516
17181920212223
24252627282930


站点统计

最新评论



条形码 CODE128 编码规则 xp winword 错误 启动安全模式 解决办法
未知 VB.net绘制code128条形码   [ 日期:2015-06-10 ]   [ 来自:本站原创 ]  HTML
'C#代码来源:http://www.cnblogs.com/rophie/archive/2012/03/02/2376946.html

'C#代码来源:http://www.cnblogs.com/rophie/archive/2012/03/02/2376946.html
Imports System
Imports System.Collections.Generic
Imports System.Data
Imports System.Drawing
Namespace Code
    Public Class BarCode
        Public Class Code128
            Private m_Code128 As New DataTable()
            Private m_Height As UInteger = 40
            ''' <summary>
            ''' 高度
            ''' </summary>
            Public Property Height() As UInteger
                Get
                    Return m_Height
                End Get
                Set(ByVal value As UInteger)
                    m_Height = value
                End Set
            End Property
            Private m_ValueFont As Font = Nothing
            ''' <summary>
            ''' 是否显示可见号码  如果为NULL不显示号码
            ''' </summary>
            Public Property ValueFont() As Font
                Get
                    Return m_ValueFont
                End Get
                Set(ByVal value As Font)
                    m_ValueFont = value
                End Set
            End Property
            Private m_Magnify As Byte = 0
            ''' <summary>
            ''' 放大倍数
            ''' </summary>
            Public Property Magnify() As Byte
                Get
                    Return m_Magnify
                End Get
                Set(ByVal value As Byte)
                    m_Magnify = value
                End Set
            End Property
            ''' <summary>
            ''' 条码类别
            ''' </summary>
            Public Enum Encode
                Code128A
                Code128B
                Code128C
                EAN128
            End Enum
            Public Sub New()
                m_Code128.Columns.Add("ID")
                m_Code128.Columns.Add("Code128A")
                m_Code128.Columns.Add("Code128B")
                m_Code128.Columns.Add("Code128C")
                m_Code128.Columns.Add("BandCode")
                m_Code128.CaseSensitive = True
                '#region 数据表
                m_Code128.Rows.Add("0", " ", " ", "00", "212222")
                m_Code128.Rows.Add("1", "!", "!", "01", "222122")
                m_Code128.Rows.Add("2", """", """", "02", "222221")
                m_Code128.Rows.Add("3", "#", "#", "03", "121223")
                m_Code128.Rows.Add("4", "$", "$", "04", "121322")
                m_Code128.Rows.Add("5", "%", "%", "05", "131222")
                m_Code128.Rows.Add("6", "&", "&", "06", "122213")
                m_Code128.Rows.Add("7", "'", "'", "07", "122312")
                m_Code128.Rows.Add("8", "(", "(", "08", "132212")
                m_Code128.Rows.Add("9", ")", ")", "09", "221213")
                m_Code128.Rows.Add("10", "*", "*", "10", "221312")
                m_Code128.Rows.Add("11", "+", "+", "11", "231212")
                m_Code128.Rows.Add("12", ",", ",", "12", "112232")
                m_Code128.Rows.Add("13", "-", "-", "13", "122132")
                m_Code128.Rows.Add("14", ".", ".", "14", "122231")
                m_Code128.Rows.Add("15", "/", "/", "15", "113222")
                m_Code128.Rows.Add("16", "0", "0", "16", "123122")
                m_Code128.Rows.Add("17", "1", "1", "17", "123221")
                m_Code128.Rows.Add("18", "2", "2", "18", "223211")
                m_Code128.Rows.Add("19", "3", "3", "19", "221132")
                m_Code128.Rows.Add("20", "4", "4", "20", "221231")
                m_Code128.Rows.Add("21", "5", "5", "21", "213212")
                m_Code128.Rows.Add("22", "6", "6", "22", "223112")
                m_Code128.Rows.Add("23", "7", "7", "23", "312131")
                m_Code128.Rows.Add("24", "8", "8", "24", "311222")
                m_Code128.Rows.Add("25", "9", "9", "25", "321122")
                m_Code128.Rows.Add("26", ":", ":", "26", "321221")
                m_Code128.Rows.Add("27", ";", ";", "27", "312212")
                m_Code128.Rows.Add("28", "<", "<", "28", "322112")
                m_Code128.Rows.Add("29", "=", "=", "29", "322211")
                m_Code128.Rows.Add("30", ">", ">", "30", "212123")
                m_Code128.Rows.Add("31", "?", "?", "31", "212321")
                m_Code128.Rows.Add("32", "@", "@", "32", "232121")
                m_Code128.Rows.Add("33", "A", "A", "33", "111323")
                m_Code128.Rows.Add("34", "B", "B", "34", "131123")
                m_Code128.Rows.Add("35", "C", "C", "35", "131321")
                m_Code128.Rows.Add("36", "D", "D", "36", "112313")
                m_Code128.Rows.Add("37", "E", "E", "37", "132113")
                m_Code128.Rows.Add("38", "F", "F", "38", "132311")
                m_Code128.Rows.Add("39", "G", "G", "39", "211313")
                m_Code128.Rows.Add("40", "H", "H", "40", "231113")
                m_Code128.Rows.Add("41", "I", "I", "41", "231311")
                m_Code128.Rows.Add("42", "J", "J", "42", "112133")
                m_Code128.Rows.Add("43", "K", "K", "43", "112331")
                m_Code128.Rows.Add("44", "L", "L", "44", "132131")
                m_Code128.Rows.Add("45", "M", "M", "45", "113123")
                m_Code128.Rows.Add("46", "N", "N", "46", "113321")
                m_Code128.Rows.Add("47", "O", "O", "47", "133121")
                m_Code128.Rows.Add("48", "P", "P", "48", "313121")
                m_Code128.Rows.Add("49", "Q", "Q", "49", "211331")
                m_Code128.Rows.Add("50", "R", "R", "50", "231131")
                m_Code128.Rows.Add("51", "S", "S", "51", "213113")
                m_Code128.Rows.Add("52", "T", "T", "52", "213311")
                m_Code128.Rows.Add("53", "U", "U", "53", "213131")
                m_Code128.Rows.Add("54", "V", "V", "54", "311123")
                m_Code128.Rows.Add("55", "W", "W", "55", "311321")
                m_Code128.Rows.Add("56", "X", "X", "56", "331121")
                m_Code128.Rows.Add("57", "Y", "Y", "57", "312113")
                m_Code128.Rows.Add("58", "Z", "Z", "58", "312311")
                m_Code128.Rows.Add("59", "[", "[", "59", "332111")
                m_Code128.Rows.Add("60", "\", "\", "60", "314111")
                m_Code128.Rows.Add("61", "]", "]", "61", "221411")
                m_Code128.Rows.Add("62", "^", "^", "62", "431111")
                m_Code128.Rows.Add("63", "_", "_", "63", "111224")
                m_Code128.Rows.Add("64", "NUL", "`", "64", "111422")
                m_Code128.Rows.Add("65", "SOH", "a", "65", "121124")
                m_Code128.Rows.Add("66", "STX", "b", "66", "121421")
                m_Code128.Rows.Add("67", "ETX", "c", "67", "141122")
                m_Code128.Rows.Add("68", "EOT", "d", "68", "141221")
                m_Code128.Rows.Add("69", "ENQ", "e", "69", "112214")
                m_Code128.Rows.Add("70", "ACK", "f", "70", "112412")
                m_Code128.Rows.Add("71", "BEL", "g", "71", "122114")
                m_Code128.Rows.Add("72", "BS", "h", "72", "122411")
                m_Code128.Rows.Add("73", "HT", "i", "73", "142112")
                m_Code128.Rows.Add("74", "LF", "j", "74", "142211")
                m_Code128.Rows.Add("75", "VT", "k", "75", "241211")
                m_Code128.Rows.Add("76", "FF", "I", "76", "221114")
                m_Code128.Rows.Add("77", "CR", "m", "77", "413111")
                m_Code128.Rows.Add("78", "SO", "n", "78", "241112")
                m_Code128.Rows.Add("79", "SI", "o", "79", "134111")
                m_Code128.Rows.Add("80", "DLE", "p", "80", "111242")
                m_Code128.Rows.Add("81", "DC1", "q", "81", "121142")
                m_Code128.Rows.Add("82", "DC2", "r", "82", "121241")
                m_Code128.Rows.Add("83", "DC3", "s", "83", "114212")
                m_Code128.Rows.Add("84", "DC4", "t", "84", "124112")
                m_Code128.Rows.Add("85", "NAK", "u", "85", "124211")
                m_Code128.Rows.Add("86", "SYN", "v", "86", "411212")
                m_Code128.Rows.Add("87", "ETB", "w", "87", "421112")
                m_Code128.Rows.Add("88", "CAN", "x", "88", "421211")
                m_Code128.Rows.Add("89", "EM", "y", "89", "212141")
                m_Code128.Rows.Add("90", "SUB", "z", "90", "214121")
                m_Code128.Rows.Add("91", "ESC", "{", "91", "412121")
                m_Code128.Rows.Add("92", "FS", "|", "92", "111143")
                m_Code128.Rows.Add("93", "GS", "}", "93", "111341")
                m_Code128.Rows.Add("94", "RS", "~", "94", "131141")
                m_Code128.Rows.Add("95", "US", "DEL", "95", "114113")
                m_Code128.Rows.Add("96", "FNC3", "FNC3", "96", "114311")
                m_Code128.Rows.Add("97", "FNC2", "FNC2", "97", "411113")
                m_Code128.Rows.Add("98", "SHIFT", "SHIFT", "98", "411311")
                m_Code128.Rows.Add("99", "CODEC", "CODEC", "99", "113141")
                m_Code128.Rows.Add("100", "CODEB", "FNC4", "CODEB", "114131")
                m_Code128.Rows.Add("101", "FNC4", "CODEA", "CODEA", "311141")
                m_Code128.Rows.Add("102", "FNC1", "FNC1", "FNC1", "411131")
                m_Code128.Rows.Add("103", "StartA", "StartA", "StartA", "211412")
                m_Code128.Rows.Add("104", "StartB", "StartB", "StartB", "211214")
                m_Code128.Rows.Add("105", "StartC", "StartC", "StartC", "211232")
                '#endregion
                m_Code128.Rows.Add("106", "Stop", "Stop", "Stop", "2331112")
            End Sub

            ''' <summary>
            ''' 获取128图形
            ''' </summary>
            ''' <param name="p_Text">文字</param>
            ''' <param name="p_Code">编码</param>      
            ''' <returns>图形</returns>
            Public Function GetCodeImage(ByVal p_Text As String, ByVal p_Code As Encode) As Bitmap

                Dim _ViewText As String = p_Text
                Dim _Text As String = ""
                Dim _TextNumb As IList(Of Integer) = New List(Of Integer)()
                Dim _Examine As Integer = 0
                '首位
                Select Case p_Code

                    Case Encode.Code128C
                        _Examine = 105
                        If Not ((p_Text.Length And 1) = 0) Then
                            Throw New Exception("128C长度必须是偶数")
                        End If
                        While p_Text.Length <> 0

                            Dim _Temp As Integer = 0
                            Try

                                Dim _CodeNumb128 As Integer = Int32.Parse(p_Text.Substring(0, 2))
                            Catch

                                Throw New Exception("128C必须是数字!")
                            End Try
                            _Text += GetValue(p_Code, p_Text.Substring(0, 2), _Temp)
                            _TextNumb.Add(_Temp)

                            p_Text = p_Text.Remove(0, 2)
                        End While
                        Exit Select
                    Case Encode.EAN128
                        _Examine = 105
                        If Not ((p_Text.Length And 1) = 0) Then
                            Throw New Exception("EAN128长度必须是偶数")
                        End If
                        _TextNumb.Add(102)
                        _Text += "411131"
                        While p_Text.Length <> 0

                            Dim _Temp As Integer = 0
                            Try

                                Dim _CodeNumb128 As Integer = Int32.Parse(p_Text.Substring(0, 2))
                            Catch

                                Throw New Exception("128C必须是数字!")
                            End Try
                            _Text += GetValue(Encode.Code128C, p_Text.Substring(0, 2), _Temp)
                            _TextNumb.Add(_Temp)

                            p_Text = p_Text.Remove(0, 2)
                        End While
                        Exit Select
                    Case Else

                        If p_Code = Encode.Code128A Then

                            _Examine = 103
                        Else


                            _Examine = 104
                        End If

                        While p_Text.Length <> 0

                            Dim _Temp As Integer = 0
                            Dim _ValueCode As String = GetValue(p_Code, p_Text.Substring(0, 1), _Temp)
                            If _ValueCode.Length = 0 Then
                                Throw New Exception("无效的字符集!" + p_Text.Substring(0, 1).ToString())
                            End If
                            _Text += _ValueCode
                            _TextNumb.Add(_Temp)

                            p_Text = p_Text.Remove(0, 1)
                        End While
                        Exit Select
                End Select
                If _TextNumb.Count = 0 Then
                    Throw New Exception("错误的编码,无数据")
                End If
                _Text = _Text.Insert(0, GetValue(_Examine))
                '获取开始位

                Dim i As Integer = 0
                While i <> _TextNumb.Count

                    _Examine += _TextNumb(i) * (i + 1)
                    System.Math.Max(System.Threading.Interlocked.Increment(i), i - 1)
                End While
                _Examine = _Examine Mod 103
                '获得严效位
                _Text += GetValue(_Examine)
                '获取严效位
                _Text += "2331112"
                '结束位
                Dim _CodeImage As Bitmap = GetImage(_Text)
                GetViewText(_CodeImage, _ViewText)
                Return _CodeImage
            End Function

            ''' <summary>
            ''' 获取目标对应的数据
            ''' </summary>
            ''' <param name="p_Code">编码</param>
            ''' <param name="p_Value">数值 A b  30</param>
            ''' <param name="p_SetID">返回编号</param>
            ''' <returns>编码</returns>
            Private Function GetValue(ByVal p_Code As Encode, ByVal p_Value As String, ByRef p_SetID As Integer) As String

                If m_Code128 Is Nothing Then
                    Return ""
                End If
                Dim _Row As DataRow() = m_Code128.[Select](p_Code.ToString() + "='" + p_Value + "'")
                If _Row.Length <> 1 Then
                    Throw New Exception("错误的编码" + p_Value.ToString())
                End If
                p_SetID = Int32.Parse(_Row(0)("ID").ToString())
                Return _Row(0)("BandCode").ToString()
            End Function

            ''' <summary>
            ''' 根据编号获得条纹
            ''' </summary>
            ''' <param name="p_CodeId"></param>
            ''' <returns></returns>
            Private Function GetValue(ByVal p_CodeId As Integer) As String

                Dim _Row As DataRow() = m_Code128.[Select]("ID='" + p_CodeId.ToString() + "'")
                If _Row.Length <> 1 Then
                    Throw New Exception("验效位的编码错误" + p_CodeId.ToString())
                End If
                Return _Row(0)("BandCode").ToString()
            End Function

            ''' <summary>
            ''' 获得条码图形
            ''' </summary>
            ''' <param name="p_Text">文字</param>
            ''' <returns>图形</returns>
            Private Function GetImage(ByVal p_Text As String) As Bitmap

                Dim _Value As Char() = p_Text.ToCharArray()
                Dim _Width As Integer = 0
                Dim i As Integer = 0
                While i <> _Value.Length

                    _Width += Int32.Parse(_Value(i).ToString()) * (m_Magnify + 1)
                    System.Math.Max(System.Threading.Interlocked.Increment(i), i - 1)
                End While
                Dim _CodeImage As New Bitmap(_Width, CType(m_Height, Integer))
                Dim _Garphics As Graphics = Graphics.FromImage(_CodeImage)
                'Pen _Pen;
                Dim _LenEx As Integer = 0
                i = 0
                While i <> _Value.Length

                    Dim _ValueNumb As Integer = Int32.Parse(_Value(i).ToString()) * (m_Magnify + 1)
                    '获取宽和放大系数
                    If Not ((i And 1) = 0) Then

                        '_Pen = new Pen(Brushes.White, _ValueNumb);

                        _Garphics.FillRectangle(Brushes.White, New Rectangle(_LenEx, 0, _ValueNumb, CType(m_Height, Integer)))
                    Else

                        '_Pen = new Pen(Brushes.Black, _ValueNumb);

                        _Garphics.FillRectangle(Brushes.Black, New Rectangle(_LenEx, 0, _ValueNumb, CType(m_Height, Integer)))
                    End If
                    '_Garphics.(_Pen, new Point(_LenEx, 0), new Point(_LenEx, m_Height));

                    _LenEx += _ValueNumb
                    System.Math.Max(System.Threading.Interlocked.Increment(i), i - 1)
                End While
                _Garphics.Dispose()
                Return _CodeImage
            End Function

            ''' <summary>
            ''' 显示可见条码文字 如果小于40 不显示文字
            ''' </summary>
            ''' <param name="p_Bitmap">图形</param>           
            Private Sub GetViewText(ByVal p_Bitmap As Bitmap, ByVal p_ViewText As String)

                If m_ValueFont Is Nothing Then
                    Return
                End If

                Dim _Graphics As Graphics = Graphics.FromImage(p_Bitmap)
                Dim _DrawSize As SizeF = _Graphics.MeasureString(p_ViewText, m_ValueFont)
                If _DrawSize.Height > p_Bitmap.Height - 10 OrElse _DrawSize.Width > p_Bitmap.Width Then

                    _Graphics.Dispose()

                    Return
                End If

                Dim _StarY As Integer = p_Bitmap.Height - CType(_DrawSize.Height, Integer)
                _Graphics.FillRectangle(Brushes.White, New Rectangle(0, _StarY, p_Bitmap.Width, CType(_DrawSize.Height, Integer)))
                _Graphics.DrawString(p_ViewText, m_ValueFont, Brushes.Black, 0, _StarY)
            End Sub


            '12345678
            '(105 + (1 * 12 + 2 * 34 + 3 * 56 + 4 *78)) % 103 = 47
            '结果为starc +12 +34 +56 +78 +47 +end

            Friend Function GetCodeImage(ByVal p As String) As Image

                Throw New NotImplementedException()
            End Function

        End Class

    End Class
End Namespace


Imports VB.net_Code128.Code.BarCode

Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.ComboBox1.Text = "Code128A"
        Me.ComboBox1.Items.Add("Code128A")
        Me.ComboBox1.Items.Add("Code128B")
        Me.ComboBox1.Items.Add("Code128C")
        Me.ComboBox1.Items.Add("EAN128")
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        On Error GoTo E
        Dim _Code As Code128 = New Code128
        _Code.ValueFont = New Font("宋体", 10)
        _Code.Height = Me.TrackBar1.Value
        _Code.Magnify = 2
        Dim Encode As Code128.Encode
        If Me.ComboBox1.Text = "Code128A" Then
            Encode = Code128.Encode.Code128A
        ElseIf Me.ComboBox1.Text = "Code128B" Then
            Encode = Code128.Encode.Code128B
        ElseIf Me.ComboBox1.Text = "Code128C" Then
            Encode = Code128.Encode.Code128C
        Else
            Encode = Code128.Encode.EAN128
        End If
        Dim imgTemp As System.Drawing.Bitmap = _Code.GetCodeImage(Me.TextBox1.Text, Encode)
        Me.PictureBox1.Image = imgTemp
        Exit Sub
E:
        MsgBox(Err.Description)
    End Sub

    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        On Error GoTo E
        Dim _Code As Code128 = New Code128
        _Code.ValueFont = New Font("宋体", 10)
        _Code.Height = Me.TrackBar1.Value
        _Code.Magnify = 2
        Dim Encode As Code128.Encode
        If Me.ComboBox1.Text = "Code128A" Then
            Encode = Code128.Encode.Code128A
        ElseIf Me.ComboBox1.Text = "Code128B" Then
            Encode = Code128.Encode.Code128B
        ElseIf Me.ComboBox1.Text = "Code128C" Then
            Encode = Code128.Encode.Code128C
        Else
            Encode = Code128.Encode.EAN128
        End If
        Dim imgTemp As System.Drawing.Bitmap = _Code.GetCodeImage(Me.TextBox1.Text, Encode)
        Me.PictureBox1.Image = imgTemp
        Exit Sub
E:
        MsgBox(Err.Description)
    End Sub
End Class


【VB.net绘制code128条形码.rar】点击下载此文件



暂时没有评论
发表评论 - 不要忘了输入验证码哦!
作者: 用户:  密码:   注册? 验证:  防止恶意留言请输入问题答案:2*5=?  
评论:

禁止表情
禁止UBB
禁止图片
识别链接
识别关键字

字体样式 文字大小 文字颜色
插入粗体文本 插入斜体文本 插入下划线
左对齐 居中对齐 右对齐
插入超级链接 插入邮件地址 插入图像
插入 Flash 插入代码 插入引用
插入列表 插入音频文件 插入视频文件
插入缩进符合
点击下载按钮 下标 上标
水平线 简介分割标记
表  情
 
Tiancao Blog All Rights Reserved 田草博客 版权所有
Copyright ©