Option Strict On
Imports System.Drawing
Public Class BarCode128B
Private sign_dictonary As New Dictionary(Of Char, String)
'''
''' Lädt die Zeichen in das Wörterbuch
'''
'''
Private Sub Load_Dictonary()
Add(" ", "bb w bb ww bb ww")
Add("!", "bb ww bb w bb ww")
Add("""", "bb ww bb ww bb w")
Add("#", "b ww b ww bb www")
Add("$", "b ww b www bb ww")
Add("%", "b www b ww bb ww")
Add("&", "b ww bb ww b www")
Add("'", "b ww bb www b ww")
Add("(", "b www bb ww b ww")
Add(")", "bb ww b ww b www")
Add("*", "bb ww b www b ww")
Add("+", "bb www b ww b ww")
Add(",", "b w bb ww bbb ww")
Add("-", "b ww bb w bbb ww")
Add(".", "b ww bb ww bbb w")
Add("/", "b w bbb ww bb ww")
Add("0", "b ww bbb w bb ww")
Add("1", "b ww bbb ww bb w")
Add("2", "bb ww bbb ww b w")
Add("3", "bb ww b w bbb ww")
Add("4", "bb ww b ww bbb w")
Add("5", "bb w bbb ww b ww")
Add("6", "bb ww bbb w b ww")
Add("7", "bbb w bb w bbb w")
Add("8", "bbb w b ww bb ww")
Add("9", "bbb ww b w bb ww")
Add(":", "bbb ww b ww bb w")
Add(";", "bbb w bb ww b ww")
Add("<", "bbb ww bb w b ww")
Add("=", "bbb ww bb ww b w")
Add(">", "bb w bb w bb www")
Add("?", "bb w bb www bb w")
Add("@", "bb www bb w bb w")
Add("A", "b w b www bb www")
Add("B", "b www b w bb www")
Add("C", "b www b www bb w")
Add("D", "b w bb www b www")
Add("E", "b www bb w b www")
Add("F", "b www bb www b w")
Add("G", "bb w b www b www")
Add("H", "bb www b w b www")
Add("I", "bb www b www b w")
Add("J", "b w bb w bbb www")
Add("K", "b w bb www bbb w")
Add("L", "b www bb w bbb w")
Add("M", "b w bbb w bb www")
Add("N", "b w bbb www bb w")
Add("O", "b www bbb w bb w")
Add("P", "bbb w bbb w bb w")
Add("Q", "bb w b www bbb w")
Add("R", "bb www b w bbb w")
Add("S", "bb w bbb w b www")
Add("T", "bb w bbb www b w")
Add("U", "bb w bbb w bbb w")
Add("V", "bbb w b w bb www")
Add("W", "bbb w b www bb w")
Add("X", "bbb www b w bb w")
Add("Y", "bbb w bb w b www")
Add("Z", "bbb w bb www b w")
Add("[", "bbb www bb w b w")
Add("\", "bbb w bbbb w b w")
Add("]", "bb ww b wwww b w")
Add("^", "bbbb www b w b w")
Add("_", "b w b ww bb wwww")
Add("`", "b w b wwww bb ww")
Add("a", "b ww b w bb wwww")
Add("b", "b ww b wwww bb w")
Add("c", "b wwww b w bb ww")
Add("d", "b wwww b ww bb w")
Add("e", "b w bb ww b wwww")
Add("f", "b w bb wwww b ww")
Add("g", "b ww bb w b wwww")
Add("h", "b ww bb wwww b w")
Add("i", "b wwww bb w b ww")
Add("j", "b wwww bb ww b w")
Add("k", "bb wwww b ww b w")
Add("l", "bb ww b w b wwww")
Add("m", "bbbb w bbb w b w")
Add("n", "bb wwww b w b ww")
Add("o", "b www bbbb w b w")
Add("p", "b w b ww bbbb ww")
Add("q", "b ww b w bbbb ww")
Add("r", "b ww b ww bbbb w")
Add("s", "b w bbbb ww b ww")
Add("t", "b ww bbbb w b ww")
Add("u", "b ww bbbb ww b w")
Add("v", "bbbb w b ww b ww")
Add("w", "bbbb ww b w b ww")
Add("x", "bbbb ww b ww b w")
Add("y", "bb w bb w bbbb w")
Add("z", "bb w bbbb w bb w")
Add("{", "bbbb w bb w bb w")
Add("|", "b w b w bbbb www")
Add("}", "b w b www bbbb w")
Add("~", "b www b w bbbb w")
End Sub
'''
''' Verkürzung von sign_dictonary.Add()
'''
'''
'''
'''
Private Sub Add(ByVal [char] As String, ByVal code As String)
sign_dictonary.Add(CChar([char]), code)
End Sub
'''
''' Konvertiert eine Zeichenfolge in Black and White Stripes
'''
''' Zu Übersetzender Text
'''
'''
Private Function Convert(ByVal text As String) As String
Load_Dictonary()
Dim returnstring As String = ""
For Each cr As Char In text
returnstring = returnstring & " " & sign_dictonary(cr)
Next
'Beginncode & TextCode & StopCode
Return ("bb w b ww bbb ww" & returnstring.Substring(1, returnstring.Length - 1) & "bb www bbb w b w bb").Replace(" ", "")
End Function
'''
''' Kodiert eine Zeichenfolge in einen 128B-Barcode
'''
''' Der darzustellende Text
''' Die Höhe des Barcodes
'''
'''
Public Function Encode(ByVal text As String, ByVal height As Integer) As Bitmap
Dim kombination As String = Convert(text)
Dim bmp As New Bitmap((kombination.Length - 1), height)
Dim gr As Graphics = Graphics.FromImage(bmp)
With gr
.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
.TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAlias
.PixelOffsetMode = Drawing2D.PixelOffsetMode.HighQuality
.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBilinear
.CompositingQuality = Drawing2D.CompositingQuality.HighQuality
End With
For u As Integer = 0 To kombination.Length - 1
If kombination.Substring(u, 1) = "w" Then
gr.FillRectangle(Brushes.White, New Rectangle(u, 0, 1, height))
End If
If kombination.Substring(u, 1) = "b" Then
gr.FillRectangle(Brushes.Black, New Rectangle(u, 0, 1, height))
End If
Next
Return bmp
End Function
End Class