Рисование и печать таблицы - Visual Basic .NET

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток. Появилась необходимость вывода на печать таблицы. В принципе ничего сложного. Но есть один неприятный момент - распечатанная таблица получается мутная, границы линий размыты. Сначала реализовал печать так: Открывается форма, на которой расположен PictureBox. В PictureBox загружен графический файл - рисунок таблицы с подписями. На PictureBox, рядом с подписями, располагаю Label'ы, в которые программно вписываю необходимые данные. Далее распечатываю методом PrintForm - получается мутно. Если пользоваться PrintDocument, то PictureBox с фоновой таблицей распечатывается, а Label'ы нет. Тогда сделал так: Отказался от Label'ов и дорисовываю текст в PictureBox (с помощью Graphics.DrawString). Дорисованный текст при распечатке получается чёткий, сама же таблица с подписями остаётся мутная. В итоге остановился на таком извращении: Полностью рисую таблицу, рисую текст и вывожу на печать PrintDocument'ом. Всё чётко и красиво. Но код получается больно навороченный и не гибкий для изменения таблицы (по мере надобности):
Листинг программы
  1. 'Рисуем таблицу. Размеры в миллиметрах, т.к. при распечатке они должны соответствовать заявленным
  2. e.Graphics.PageUnit = GraphicsUnit.Millimeter
  3. Dim Pen1 As New Pen(Color.Black, 0.2)
  4. e.Graphics.DrawRectangle(Pen1, tX, tY, tW, tH)
  5. e.Graphics.DrawLine(Pen1, tX, tY + 8, tX + tW, tY + 8)
  6. e.Graphics.DrawLine(Pen1, tX, tY + 22, tX + tW, tY + 22)
  7. e.Graphics.DrawLine(Pen1, tX, tY + 32, tX + tW, tY + 32)
  8. e.Graphics.DrawLine(Pen1, tX, tY + 38, tX + tW, tY + 38)
  9. e.Graphics.DrawLine(Pen1, tX, tY + 46, tX + tW, tY + 46)
  10. e.Graphics.DrawLine(Pen1, tX + 43, tY + 38, tX + 43, tY + 54)
  11. e.Graphics.DrawLine(Pen1, tX + 21, tY + 38, tX + 21, tY + 54)
  12. ' Отрисовываем текст
  13. Dim printFontZag = New Font("Verdana", 11, FontStyle.Regular)
  14. Dim printFontInfR = New Font("Verdana", 10, FontStyle.Regular)
  15. Dim printFontInfB = New Font("Verdana", 10, FontStyle.Bold)
  16. e.Graphics.DrawString("Строка Тест1", printFontZag, Brushes.Black, tX + 22, tY + 1, New StringFormat())
  17. e.Graphics.DrawString("Строка Тест2 ", printFontInfR, Brushes.Black, tX + 10, tY + 9, New StringFormat())
  18. '...
  19. e.Graphics.DrawString("Строка Тест3", printFontInfR, Brushes.Black, tX + 3, tY + 17, New StringFormat())
Как быть? Последний метод единственный верный или можно как-то просто, чётко и красиво распечатать мою таблицу? Спасибо. ----- Работаю в VB.NET 2008

Решение задачи: «Рисование и печать таблицы»

textual
Листинг программы
  1. Private Sub Label1_DoubleClick(sender As System.Object, e As System.EventArgs) Handles Label1.DoubleClick
  2.     PrintForm1.Form = Me
  3.     PrintForm1.PrintAction = Printing.PrintAction.PrintToPrinter
  4.     PrintForm1.Print()
  5. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.643 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы