Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: PrintPreviwControl Добавлено: 16.05.12 16:19  

Автор вопроса:  Cramper
Изображение текста и графики в PrintPreviwControl часто не соответствует тому, что выводится на принтер. Имеется в виду смещение в позициях символов. Изображение текста часто "пляшет" при зуммировании в самом окне контрола. Кто-нибудь может что-нибудь подсказать по этой проблеме?
VB 2010. Спасибо.

Ответить

  Ответы Всего ответов: 6  

Номер ответа: 1
Автор ответа:
 Дмитрий Юпатов



Вопросов: 4
Ответов: 457
 Web-сайт: cargomaster.at.ua/
 Профиль | | #1
Добавлено: 16.05.12 17:10
К сожалению, это не все приколы... когда текста много (ну страниц 10 и больше), этот гад может запросто страницы начиная эдак с 5 рисовать пустыми. А при попытке отправить их на печать (если пользуем не просто контрол, а ПревьюДиалог (у него встроенная менюха есть под печать), то и пустыми их на печать отправить...
ИМХО, проще самому отрисовать задание для печати на серии картинок и потом посмотреть их в Пикчербоксе. Благо, методы рисования на странице объекта PrintDocument те же, что и на Graphics. Если правильно помню статью МСДН, то он от Graphics и унаследован.
Хотя врать не стану, пока дальше идеи у меня не пошло. Все руки не доходят до реализации своего ПревьюКонтрола.

Ответить

Номер ответа: 2
Автор ответа:
 Cramper



Вопросов: 15
Ответов: 93
 Профиль | | #2 Добавлено: 17.05.12 08:08
Спасибо, Дмитрий. Мне как раз и предстоит печать на многих страницах. Придется как-то выкручиваться, видимо как вы и предлагаете.

Ответить

Номер ответа: 3
Автор ответа:
 BG(Алексей)



Вопросов: 26
Ответов: 295
 Профиль | | #3 Добавлено: 18.05.12 06:46
Ни разу не встречался с подобными проблемами.
Если правильно реализовать, все будет работать.

Ответить

Номер ответа: 4
Автор ответа:
 Cramper



Вопросов: 15
Ответов: 93
 Профиль | | #4 Добавлено: 18.05.12 08:16
Знать бы в чем мы поступаем неправильно?

Ответить

Номер ответа: 5
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #5 Добавлено: 19.05.12 09:15
Если есть пример в котором СТАБИЛЬНО воспроизводится ошибка, можно посмотреть. Если стабильно не воспроизводится - вперед писать на connect.microsoft.com

Ответить

Номер ответа: 6
Автор ответа:
 Cramper



Вопросов: 15
Ответов: 93
 Профиль | | #6 Добавлено: 21.05.12 16:15
Вот такой код. При зуммировании искажается изображение текста. Но на принтер выводится все правильно.
Public Class Form1
    Dim i, pozb As Integer
    Dim isa = New Integer() {20, 205, 239, 282, 348, 444, 479, 515, 590, 701, 701, 751, 790}
    Dim zom As Decimal
    Private WithEvents docToPrint As New Printing.PrintDocument

    Private Property PrintPreviewControl1 As PrintPreviewControl

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Height = 665
        Me.Width = 875
        InitializePrintPreviewControl()
        zom = 0.5
    End Sub
    Private Sub InitializePrintPreviewControl()
        ' Construct the PrintPreviewControl.
        Me.PrintPreviewControl1 = New PrintPreviewControl
        ' Set location, name, and dock style for PrintPreviewControl1.
        Me.PrintPreviewControl1.Location = New Point(30, 60)
        Me.PrintPreviewControl1.Width = 500
        Me.PrintPreviewControl1.Height = 520
        Me.PrintPreviewControl1.Document = docToPrint
        Me.PrintPreviewControl1.Zoom = 0.5
        Me.Controls.Add(Me.PrintPreviewControl1)
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        zom = zom + 0.1
        Me.PrintPreviewControl1.Zoom = zom
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        zom = zom - 0.1
        If zom < 0 Then
            zom = 0.1
        End If
        Me.PrintPreviewControl1.Zoom = zom

    End Sub
    Private Sub docToPrint_PrintPage(ByVal sender As Object, _
    ByVal e As System.Drawing.Printing.PrintPageEventArgs) _
        Handles docToPrint.PrintPage
        Dim i As Integer
        Dim text As String = " "
        Dim printFont As New Font("Arial", 8, System.Drawing.FontStyle.Italic)
        pozb = 0
        e.Graphics.DrawLine(Pens.Black, 20, pozb + 75, 790, pozb + 75)
        text = "   Наименование товара                 Еди-     Коли-    Цена                 Стоимость     В        Нало-     Сумма             Стоимость           Страна  Номер"
        e.Graphics.DrawString(text, printFont, System.Drawing.Brushes.Black, 20, pozb + 78)
        text = "   (описание выполненных               ница    чест-    тариф              товаров          том    говая     налога             товаров                 проис-    грузо-"
        e.Graphics.DrawString(text, printFont, System.Drawing.Brushes.Black, 20, pozb + 90)
        text = "   работ, оказанных услуг)              изме-   во         за единицу        ;(работ,           числе  став-                             (работ,                   хожде-    вой   "
        e.Graphics.DrawString(text, printFont, System.Drawing.Brushes.Black, 20, pozb + 102)
        text = "                                                                                   изме-                 услуг,              акциз   ка                                   услуг),всего           ния         тамо-"
        e.Graphics.DrawString(text, printFont, System.Drawing.Brushes.Black, 20, pozb + 114)
        text = "                                                                                   рения                 всего без                                                           с учетом                               жен- "
        e.Graphics.DrawString(text, printFont, System.Drawing.Brushes.Black, 20, pozb + 126)
        text = "                                                                                                             налога                                                                налога                                   ной- "
        e.Graphics.DrawString(text, printFont, System.Drawing.Brushes.Black, 20, pozb + 138)
        text = "                                                                                                                                                                                       (рубли)                                   декла-"
        e.Graphics.DrawString(text, printFont, System.Drawing.Brushes.Black, 20, pozb + 150)
        text = "                                                                                                                                                                                                                                      рации"
        e.Graphics.DrawString(text, printFont, System.Drawing.Brushes.Black, 20, pozb + 162)
        For i = 0 To 12
            e.Graphics.DrawLine(Pens.Black, isa(i), pozb + 75, isa(i), pozb + 195)
        Next
        e.Graphics.DrawLine(Pens.Black, 20, pozb + 179, 790, pozb + 179)
        e.Graphics.DrawLine(Pens.Black, 20, pozb + 195, 790, pozb + 195)
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        'ВЫВОД НА ПЕЧАТЬ hp LASER 1600
        docToPrint.Print()
    End Sub
End Class

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам