05-01-18, 08:09 PM
عملية رسم الباركود تحتاج الي بعض الحرفة
في المثال التالي ستجد كودا يوضح كيقية حساب المستطيل الذي يجب أت يحتوي علي الباركود تكست
ايضا الكود يوضح كيفية حساب اأبعاد الصورة
انا استخدمت تشفير بسيط لتحويل الباركود تكست الي Binary أولا
و لم استخدم طريقتك في التشفيير
الكود ممكن تعديله ب اكثر من اسلوب لكي ترسم الباركود والتكست الخاص به
بحيث أن التكست يمكن رسمه في المنتصف او غلي اليمين او علي اليسار تحت اعمدة الباركوود مباشرة
في المثال التالي ستجد كودا يوضح كيقية حساب المستطيل الذي يجب أت يحتوي علي الباركود تكست
ايضا الكود يوضح كيفية حساب اأبعاد الصورة
انا استخدمت تشفير بسيط لتحويل الباركود تكست الي Binary أولا
و لم استخدم طريقتك في التشفيير
الكود ممكن تعديله ب اكثر من اسلوب لكي ترسم الباركود والتكست الخاص به
بحيث أن التكست يمكن رسمه في المنتصف او غلي اليمين او علي اليسار تحت اعمدة الباركوود مباشرة
PHP كود :
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Using img As Bitmap = Me.GetBarCode("0123456789", Me.Font)
img.Save(".\barCode.jpg")
End Using
End Sub
Private Sub GetBarCodeBitmap(barCodeString As String, barCodeFont As Font, ByRef bmp As Bitmap)
Dim pt As Point = New Point(0, 0)
Dim ht As Integer = 60
Dim w As Integer = 0
Dim s As String = barCodeString
Dim txtSize As Size = TextRenderer.MeasureText(s, Me.Font)
Dim result As String = String.Empty
' Convert String to binary
Dim i As Integer = 0
While i < s.Length
Dim c As Char = s(i)
' encrypt char
Dim values As Byte() = System.Text.ASCIIEncoding.ASCII.GetBytes(c.ToString)
Dim j As Integer = 0
While j < values.Length
' convert char to binary use the pattern as per your requirements
result += Convert.ToString(values(j), 2).PadLeft(8, "0")
j += 1
End While
i += 1
End While
Dim penwidth As Single = 2
Dim x As Integer = 0
While x < result.Length
w += CInt(penwidth)
x += 1
End While
Dim rect As Rectangle = New Rectangle(pt.X, pt.Y + ht, w / 2, txtSize.Height)
bmp = New Bitmap(CInt(w / 2), txtSize.Height + ht)
Dim gr As Graphics = Graphics.FromImage(bmp)
gr.Clear(Color.White)
Dim mode = gr.SmoothingMode
gr.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
Dim m As Integer = 0
While m < result.Length
Dim clr As Color = Color.Empty
Dim current As String = result(m)
If current = "0" Then
clr = Color.Black
Else
clr = Color.White
End If
Using p As Pen = New Pen(clr)
p.Width = CSng(penwidth)
Dim p1 As Point = New Point(m + pt.X, pt.Y)
Dim p2 As Point = New Point(m + pt.X, pt.Y + ht)
gr.DrawLine(p, p1, p2)
End Using
m += 1
End While
Dim contentRect As Rectangle = rect
contentRect.Width = txtSize.Width
contentRect.X = rect.X + (rect.Width - txtSize.Width) / 2
contentRect.Y = rect.Y + (rect.Height - txtSize.Height) / 2
Using sb As New SolidBrush(Color.Black)
gr.DrawString(s, Me.Font, sb, contentRect.X, contentRect.Y)
End Using
gr.SmoothingMode = mode
If gr IsNot Nothing Then
gr.Dispose()
gr = Nothing
End If
End Sub
Private Function GetBarCode(barcodestring As String, barcodeFont As Font) As Bitmap
Dim bmp As Bitmap = CType(Nothing, Bitmap)
Me.GetBarCodeBitmap(barcodestring, barcodeFont, bmp)
Return bmp
End Function
End Class
Retired

