Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Принтер и другие Добавлено: 26.06.02 15:13  

Автор вопроса:  Taran

Привет всем, кто не поленился взглянуть на этот вопрос. Возможно кому-то покажется он пустяковым, но всё же. Вот в чём проблема. На форме рисую чертёж, куча линий, прямоугольников, дуг и окружностей. Всё выглядет нормально, но только на форме, а вот при распечатке этого шедевра :) начинается самое интересное. Дело в том, что при распечатке на листе получается совсем крошечный рисунок и как сделать, что бы на листе при распечатке рисунок был хотя бы такого же размера как на форме. Кто знает, подскажите.
Заранее благодарен.

Ответить

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

Номер ответа: 1
Автор ответа:
 Иван



Администратор

ICQ: 147688925 

Вопросов: 24
Ответов: 708
 Web-сайт: www.vbnet.ru
 Профиль | | #1
Добавлено: 26.06.02 21:06
Вопрос конечно интересный. Ты как печатаешь рисунок? Методом Print у формы? Я бы рекомендовал сразу на притнер выводить графику. Т.е. не на форму, а сразу на принтер. Размеры будут соблюдены вплоть до миллиметра - однозначно!  По крайней мере я печатаю платежные поручения и у банка нет никаких претензий по размерам.

Ответить

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



Вопросов: 1
Ответов: 1
 Профиль | | #2 Добавлено: 27.06.02 10:37

Привет, Иван и все, все, все.

Иван, спасибо за то что ответил на вопрос. Система у меня такая. Чертёж я вывожу на форму для просмотра и рядом висит кнопка которая посылает этот рисунок на принтер. Вот кусок кода кнопки:

   Private Sub Command3_Click()
   ' Printer.Zoom = 100
   ' Printer.ScaleMode = 3
   Printer.DrawWidth = 2
   Printer.Line (70, 100)-(70, 450)
   Printer.Line (70, 450)-(319, 450)
   Printer.Circle (89, 100), 20, , 3.14 / 2, 3.14
   Printer.Line (87, 80)-(300, 80) ...... и т.д.

т. е. я делаю именно так как ты и говорил, сразу посылаю на принтер, но проблема осталась, ну вообщем всё получается уменьшеным в несколько раз. Хелп ми!!!

Ответить

Номер ответа: 3
Автор ответа:
 Strannik



Вопросов: 9
Ответов: 112
 Профиль | | #3 Добавлено: 27.06.02 11:31

А если выставить такой режим:

Printer.ScaleMode = vbPoints

Все-таки пиксели у монитора и принтера различаются по размерам.

Ответить

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



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #4
Добавлено: 27.06.02 12:07

Попробуй

ppX=printer.twipsperpixelx

ppY=printer.twipsperpixely

Printer.Line (70*ppX, 100*ppY)-(70*ppX, 450*ppY)

Ответить

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



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #5
Добавлено: 27.06.02 12:13

Да, кстати, не забудь определить размеры листа с помощью

Printer.ScaleWidth(ScaleHeight,ScaleLeft,ScaleTop).

 

С наилучшими пожеланиями.

Ответить

Номер ответа: 6
Автор ответа:
 Иван



Администратор

ICQ: 147688925 

Вопросов: 24
Ответов: 708
 Web-сайт: www.vbnet.ru
 Профиль | | #6
Добавлено: 27.06.02 21:33

Я печатаю все в миллиметрах, предварительно сделав константу:

Const vbTwipsInMilimeters = 56.7

теперь так:

    Printer.Line (70 * vbTwipsInMilimeters, 100 * vbTwipsInMilimeters)-(70 * vbTwipsInMilimeters, 450 * vbTwipsInMilimeters)

Ответить

Номер ответа: 7
Автор ответа:
 clod



Вопросов: 0
Ответов: 13
 Профиль | | #7 Добавлено: 28.06.02 09:50
рисовать на форме и на принтере надо в системе координат не зависящих от устройства в твипсах, миллиметрах и т. д. Тогда соответствие размеров будет обеспечено.

Ответить

Страница: 1 |

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



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