تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] افضل ما توصلت له لنظام الباركود
#21
بشكل مبدئي أنا فهمت فكرة الكود الخاص بك
وهي تعتمد علي تحويل البار كود الي ارقام Binary ثم ترسم الخطوط باللون الاسود في حالة ان كانت القيمة تساوي صفرا او ترسمها باللون الابيض في حالة ان كانت القيمة تساوي 1

لكن قبل أن أكمل الكود محتاج أفهم منك كيف يتم قراءة الباركود؟
أم أن الأمر فقط هو رسم الباركود بالإضافة إلي بعض المعلومات الاضافية مثل السعر و اسم الشركة و خلافه
أيضا أحتاج أن أفهم من أين أتيت بأرقام Binary الختصة بالباركود لأنها كلها عبارة عن String
 
عموما انظر للكود التالي و اخبرني برأيك
أيضا هنا يتم تحويل أرقام الباركود بشكل مباشر و انا لم استخدم الارقام الخاصة بك
لتنفيذ الكود افتح مشروع جديد للتجربة و في الحدث Paint اكتب الكود التالي

PHP كود :
   Protected Overrides Sub OnPaint(As PaintEventArgs)
 
       MyBase.OnPaint(e)

 
       e.Graphics.SmoothingMode Drawing2D.SmoothingMode.AntiAlias

        Dim str 
As String "123456789"
 
       Dim bytes Encoding.UTF8.GetBytes(str)
 
       Dim s As String String.Join(Of String)(""bytes.Select(Of String)(Function(bConvert.ToString(b2)))
 
       Dim f As Font = New Font("times new roman"12.0FFontStyle.Bold)
 
       Dim txtSize As SizeF e.Graphics.MeasureString(sf)
 
       Dim x As Integer 100
        Dim y 
As Integer 100
        For i 
0 To s.Length 1
            Dim current 
As String = (s(i))
 
           Dim chrWidth As Integer e.Graphics.MeasureString(currentf).Width
            Dim chrHeight 
As Integer e.Graphics.MeasureString(currentf).Height
            Dim chrRect 
As Rectangle = New Rectangle(xyMath.Min(chrWidth2), Math.Max(chrHeight100))
 
           If current 0 Then
                
'e.Graphics.DrawString(current, f, New SolidBrush(Color.Black), chrRect)
                Using sb As New SolidBrush(Color.Black)
                    e.Graphics.FillRectangle(sb, chrRect)
                End Using
            ElseIf current = 1 Then
                '
e.Graphics.DrawString(currentf, New SolidBrush(Color.White), chrRect)
 
               Using sb As New SolidBrush(Color.White)
 
                   e.Graphics.FillRectangle(sbchrRect)
 
               End Using
            Else
                Exit 
For
 
           End If

 
           x += Math.Min(chrWidth2)
 
       Next

    End Sub 
الرد }}}
تم الشكر بواسطة:
#22
(15-05-17, 12:37 PM)silverlight كتب : بشكل مبدئي أنا فهمت فكرة الكود الخاص بك
وهي تعتمد علي تحويل البار كود الي ارقام Binary ثم ترسم الخطوط باللون الاسود في حالة ان كانت القيمة تساوي صفرا او ترسمها باللون الابيض في حالة ان كانت القيمة تساوي 1

لكن قبل أن أكمل الكود محتاج أفهم منك كيف يتم قراءة الباركود؟
أم أن الأمر فقط هو رسم الباركود بالإضافة إلي بعض المعلومات الاضافية مثل السعر و اسم الشركة و خلافه
أيضا أحتاج أن أفهم من أين أتيت بأرقام Binary الختصة بالباركود لأنها كلها عبارة عن String
 
عموما انظر للكود التالي و اخبرني برأيك
أيضا هنا يتم تحويل أرقام الباركود بشكل مباشر و انا لم استخدم الارقام الخاصة بك
لتنفيذ الكود افتح مشروع جديد للتجربة و في الحدث Paint اكتب الكود التالي

PHP كود :
   Protected Overrides Sub OnPaint(As PaintEventArgs)
 
       MyBase.OnPaint(e)

 
       e.Graphics.SmoothingMode Drawing2D.SmoothingMode.AntiAlias

        Dim str 
As String "123456789"
 
       Dim bytes Encoding.UTF8.GetBytes(str)
 
       Dim s As String String.Join(Of String)(""bytes.Select(Of String)(Function(bConvert.ToString(b2)))
 
       Dim f As Font = New Font("times new roman"12.0FFontStyle.Bold)
 
       Dim txtSize As SizeF e.Graphics.MeasureString(sf)
 
       Dim x As Integer 100
        Dim y 
As Integer 100
        For i 
0 To s.Length 1
            Dim current 
As String = (s(i))
 
           Dim chrWidth As Integer e.Graphics.MeasureString(currentf).Width
            Dim chrHeight 
As Integer e.Graphics.MeasureString(currentf).Height
            Dim chrRect 
As Rectangle = New Rectangle(xyMath.Min(chrWidth2), Math.Max(chrHeight100))
 
           If current 0 Then
                
'e.Graphics.DrawString(current, f, New SolidBrush(Color.Black), chrRect)
                Using sb As New SolidBrush(Color.Black)
                    e.Graphics.FillRectangle(sb, chrRect)
                End Using
            ElseIf current = 1 Then
                '
e.Graphics.DrawString(currentf, New SolidBrush(Color.White), chrRect)
 
               Using sb As New SolidBrush(Color.White)
 
                   e.Graphics.FillRectangle(sbchrRect)
 
               End Using
            Else
                Exit 
For
 
           End If

 
           x += Math.Min(chrWidth2)
 
       Next

    End Sub 
جزاك الله خيرا على تعبك
اولا فى قرائة رمز الباركود اللى مطبوع على الملصق من خلال الاسكانر او الماسح الضوئى يتم استرجاع الرمز الى الرقم الذى تم تحويله و تطبع على textbox داخل البرنامج يعنى اسم الصنف و السعر و اسم الشركة ليس لهم علاقة بالرمز 
الرمز لرقم الكود فقط اما اسم الصنف و السعر و اسم الشركة يتم طباعتهم على الملسق فقط للبيان
انا سوف اقوم بتجربة الكود و سوف اضعه فى امر Paint
 و سوف اخبرك بالذى تم

اخى لم تخبرنى هل احتفظ بال module1

اخى رجاء ارفق لى السورس و شكرا لمجهوداتك
الرد }}}
تم الشكر بواسطة:
#23
بدل الاكواد دي مكان مثلها في module1 (وهي من اول انشاء الصورة)

كود :
       ' انشاء صورة عرضها عدد حروف الباينرى المستخدم
       Dim bmp As Bitmap = New Bitmap(Len(Binaryz), 210, System.Drawing.Imaging.PixelFormat.Format24bppRgb)
       Dim z As String ' متغير لمعرفة لون الخط
       Dim GraphZ As Graphics = Graphics.FromImage(bmp)
       Dim RectZ As Rectangle = New Rectangle(0, 0, bmp.Width, bmp.Height) ' مستطيل بحجم الصورة لاعطاء الخلفية باللون الابيض
       ' فرشاه لدهان المستطيل السابق باللون الابيض
       Dim myBrush As Brush = New Drawing.Drawing2D.LinearGradientBrush(RectZ, Color.White, Color.White, Drawing.Drawing2D.LinearGradientMode.ForwardDiagonal)
       ' دهان المستطيل السابق باللون الابيض
       GraphZ.FillRectangle(myBrush, RectZ)
       '  رسم خطوط الباركود
       Dim PenZ As Pen
       Dim point1 As Point ' نقطة بداية الخط
       Dim point2 As Point ' نقطة نهاية الخط
       For I = 1 To Len(Binaryz)
           z = Mid(Binaryz, I, 1)
           If z = "0" Then
               PenZ = New Pen(Color.Black, 1)
               point1 = New Point(I, 45)
               point2 = New Point(I, 120)
               GraphZ.DrawLine(PenZ, point1, point2)
           Else
               PenZ = New Pen(Color.White, 1)
               point1 = New Point(I, 45)
               point2 = New Point(I, 120)
               GraphZ.DrawLine(PenZ, point1, point2)
           End If
       Next
       ' رسم النص المراد ترميزه اسفل الكود
       Dim format1 As New StringFormat
       format1.Alignment = StringAlignment.Center
       GraphZ.DrawString(TheText, New Font("times new roman", 16, FontStyle.Bold), New SolidBrush(Color.Black), bmp.Width / 2, 120, format1)
       GraphZ.DrawString(Kind, New Font("times new roman", 24, FontStyle.Bold), New SolidBrush(Color.Black), bmp.Width / 2, 165, format1)
       GraphZ.DrawString(Price, New Font("times new roman", 24, FontStyle.Bold), New SolidBrush(Color.Black), bmp.Width / 2, 0, format1)
       Code128 = bmp

انا كبرت الصورة كما قال لك الاستاذ الفاضل silverlight
اخيرا في حاجة ممكن تفزعك وهي صورة الباركود في picbox  الى اسمها في المثال  PicBarCode اذهب الى خاصية
 PicBarCode.BackgroundImageLayout وغيرها الى Stretch
طبعا ده كله للمثال بتاعك وليس المثال الاخير
رجاء لما تجربها عملي قلي ايه النتيجة
صلى الله على نبينا محمد
اخيكم / محمود صالح
  قال الزهري رحمه الله  
 مــا عُـــبـِد الله بشئ أفضل من العلم 
الرد }}}
تم الشكر بواسطة:
#24
السلام عليكم اخوتي 

اردة تعديل بسيط على الكود من فضلكم

اضفط على Form1 عدد 1 combobox و اريد من خلاله التحكم في نوع الخط و يسمع على الملسق بعد الطباعة




حاولت التعديل من الموديول بهذه الطريقة ولكن اعطتني خطاء



قبل التعديل
     GraphZ.DrawString(Company, New Font("times new roman", 12, FontStyle.Bold), New SolidBrush(Color.Black), 0, 50)


بعد التعديل
     GraphZ.DrawString(Company, New Font(form1.combobox1.text), New SolidBrush(Color.Black), 0, 50)

السورس كود فى المرفقات


الملفات المرفقة
.rar   باركود.rar (الحجم : 120.12 ك ب / التحميلات : 76)
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  ارجو المساعدة فى شاشة طباعة الباركود new_programer 10 577 09-01-24, 08:41 PM
آخر رد: new_programer
  اريد طباعة الباركود المحدد فقط مع الكمية new_programer 5 431 09-01-24, 08:40 PM
آخر رد: new_programer
  سؤال فى برمجة جهاز الباركود خالد كامل1 6 477 05-01-24, 12:25 AM
آخر رد: HALIM ELEULMA
Tongue Barcode Maker - صانع ملصقات الباركود waataanys 6 517 27-11-23, 08:09 PM
آخر رد: waataanys
  مشكله فى جهاز قراءة الباركود خالد كامل1 1 351 03-11-23, 06:42 AM
آخر رد: Taha Okla
  مشكله عند طباعه الباركود الكتابة تظهر بهتة في خيال والنقاط قريبه من بعض غيرت الفونت ahmedhhh2 11 787 30-09-23, 08:31 AM
آخر رد: atefkhalf2004
  [VB.NET] افضل انواع الخط لفاتورة المبيعات8c محمد بوقزاحة 2 403 09-05-23, 08:31 PM
آخر رد: محمد بوقزاحة
  [VB.NET] تكويد الباركود mo_sa 0 425 30-04-23, 07:50 AM
آخر رد: mo_sa
Question [VB.NET] مساعده في طريقه الاتصال بالسيرفر ايهما افضل Àhmedsaif500 0 297 10-04-23, 09:45 AM
آخر رد: Àhmedsaif500
  [VB.NET] مشكله في قراءة ملصقات الباركود CoderMM 6 1,808 15-03-23, 06:27 PM
آخر رد: المتألق9

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم