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

انا بستخدم الكود ده
كود :
Static currentChar As Integer
       Static currentLine As Integer
       Dim textfont As Font = TextBox1.Font
       Dim h, w As Integer
       Dim left, top As Integer

       With PrintDocument1.DefaultPageSettings
           h = .PaperSize.Height - .Margins.Top - .Margins.Bottom
           w = .PaperSize.Width - .Margins.Left - .Margins.Right
           left = PrintDocument1.DefaultPageSettings.Margins.Left
           top = PrintDocument1.DefaultPageSettings.Margins.Top
       End With
       e.Graphics.DrawRectangle(Pens.Blue, New Rectangle(left, top, w, h))
       If PrintDocument1.DefaultPageSettings.Landscape Then
           Dim a As Integer
           a = h
           h = w
           w = a
       End If
       Dim lines As Integer = CInt(Math.Round(h / textfont.Height))
       Dim b As New Rectangle(left, top, w, h)
       Dim format As StringFormat
       If Not TextBox1.WordWrap Then
           format = New StringFormat(StringFormatFlags.NoWrap)
           format.Trimming = StringTrimming.EllipsisWord
           Dim i As Integer
           For i = currentLine To Math.Min(currentLine + lines, TextBox1.Lines.Length - 1)
               e.Graphics.DrawString(TextBox1.Lines(i), textfont, Brushes.Black, New RectangleF(left, top + textfont.Height * (i - currentLine), w, textfont.Height), format)
           Next
           currentLine += lines
           If currentLine >= TextBox1.Lines.Length Then
               e.HasMorePages = False
               currentLine = 0
           Else
               e.HasMorePages = True
           End If
           Exit Sub
       End If
       format = New StringFormat(StringFormatFlags.LineLimit)
       Dim line, chars As Integer
       e.Graphics.MeasureString(Mid(TextBox1.Text, currentChar + 1), textfont, New SizeF(w, h), format, chars, line)
       If currentChar + chars < TextBox1.Text.Length Then
           If TextBox1.Text.Substring(currentChar + chars, 1) <> " " And TextBox1.Text.Substring(currentChar + chars, 1) <> vbLf Then
               While chars > 0
                   TextBox1.Text.Substring(currentChar + chars, 1)
                   TextBox1.Text.Substring(currentChar + chars, 1)
                   chars -= 1
               End While
               chars += 1
           End If
       End If
       e.Graphics.DrawString(TextBox1.Text.Substring(currentChar, chars), textfont, Brushes.Black, b, format)
       currentChar = currentChar + chars
       If currentChar < TextBox1.Text.Length Then
           e.HasMorePages = True
       Else
           e.HasMorePages = False
           currentChar = 0
       End If



الكود تمام و بيطبع
بس بيطبع الكلام علي الشمال و انا مش عارف اجيبه في منتصف الورقة
انا بستخدم ورق A5 بمقاس 210*148
افيدووووووووووووني
الرد }}}
تم الشكر بواسطة:
#2
هذا لتوسيط النص أفقيا
PHP كود :
format.Alignment StringAlignment.Center 

وهذا لتوسيط النص عموديا
PHP كود :
format.LineAlignment StringAlignment.Center 
الرد }}}
تم الشكر بواسطة:



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


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