Member 11436716 Ответов: 1

Печать этикетки на большем количестве страниц VB.NET


I use a code to print a libel with all its contents and move to the next page but the problem

1 - Printing breaks the base of the first page when moving to the next page I want to have a vacuum at the end of the page 1

Print completes the next page but prints at the bottom of the page rather than the top of the page

The image appears inside the lable and is contained and does not appear below the lable when printing

What I have tried:

<pre> Static Lines() As String = Label1.Text.Split(vbCrLf)
        Static Font As New Font("Arial", 10, FontStyle.Regular, GraphicsUnit.Pixel)
        Static I As Integer
        Dim bmp As System.Drawing.Bitmap
        bmp = PictureBox1.Image
        Dim VerticalPos As Integer = 1000
        Do
            e.Graphics.DrawString(Lines(I), Font, Brushes.Black, 200, VerticalPos)
            I += 1
            VerticalPos += Font.Height
            e.Graphics.DrawImage(bmp, 200, VerticalPos + 100)
            If VerticalPos > e.PageBounds.Bottom Then
                e.Graphics.DrawImage(bmp, 200, VerticalPos)
                e.HasMorePages = True
                Return
            End If
        Loop Until I = Lines.Length
    End Sub

1 Ответов

Рейтинг:
4

Richard MacCutchan

Ваше сравнение с VerticalPos с концом страницы это не совсем правильно. Вы должны проверить это, прежде чем рисовать растровое изображение, чтобы убедиться, что там достаточно места. Вы также не обновляете его после того, как нарисуете изображение, поэтому ваше позиционирование будет неверным с этого момента.


Member 11436716

Я знаю местоположение проблемы, но не знаю, как исправить код

Richard MacCutchan

Вы должны увеличить значение VerticalPos для каждой строки текста, а также для каждого изображения, которое вы рисуете. Кроме того, вы должны проверить количество пространства между VerticalPos и PageBounds.Внизу перед тем, как нарисовать изображение, убедитесь, что оно поместится на странице.