Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Работа печати через "Begindoc...EndDoc"


Василий ©   (2006-06-09 05:46:00) 

Здравствуйте, уважаемые мастера. Столкнулся с очень интересным вопросом касательно вывода графики на печать. Вот в чем дело.
1. Кидаю на главную форму метки и картинку (в TImage на форме). После всех вычислений метки заполняются.. Теперь мне надо все это "хозяйство" вывести на печать посредством операторов BeginDoc...EndDoc.  Для этого я создаю переменную типа TBitmap в которую копирую полученное  изображение. А на Printer.Canvas его переношу из TBitmap(это делаю только из-за того что мне нужен ,содержащий все элементы на форме).
  И что интересно: методом Draw,StrechDraw, CopyRect - на матричном распечаталось, а вот лазерный показал "бесконечные просторы Tcanvas", то есть ничего на распечатал.
 У меня сложилось впечатление что Copyrect не копирует содержимое Bitmap на канву принтера. Но скопировал в Clipboard - Bitmap не пуст!.
2. Решил по совету перейти на функции canvas.TextOut(x,y,string). Все сделал. Однако все равно не печатает через переменную типа Bitmap. Но поставил вместо переменной Bitmap в StrechDraw в качестве исходного изображения Image1.Picture.Graphic, так все распечаталось. Но ведь Bitmap не пуст.
Подскажите пожалуйста, что за система при распечатке посредством операторов BeginDoc..EndDoc. И как можно нормально распечатать изображение через дин-ую переменную Tbitmap. Может здесь есть какие-то тонкости при использовании данных операторов.

С уваженеим, Василий.


Василий   (2006-06-13 06:11:00) [1]

Спасибо за ссылку, jb.  Прочитаю ее повнимательней. Попробую разобраться.
Касательно изображения: оно черно-белое(монохромное).

Мне другое теперь интересно, а как часто народ пользуется моетодом Begindoc..enddoc для вывода графики на печать.

С уважением, Василий.


jb   (2006-06-11 19:08:00) [2]

У меня однажды возникла такая проблема. Печатаю картинку смасштабированную на весь лист, а из принтера чистый лист вылазиет. И тоже на лазернике такая ерунда, а на струйнике печатается нормально. Оказывается у HP1100 памяти маловато, я картинку уменьшил и все заработало, попробуй тожу так сделать, может поможет. Еще вотчто попробуй (правда неуверен что получится) лазерник всеравно в цвете не печатает, сделай картинку черно-белой так она весить меньше будет. Кстати пропечать есть хорошая статья на www.asportal.h16.ru


Василий   (2006-06-10 23:21:00) [3]

>>> То есть распечатать содержимое формы, я правильно понимаю? Или, всё- таки, Bitmap? Ещё есть метод PaintTo(DC: HDC; X, Y: Integer); у объектов TWinControl и его наследников.

Не содержимое формы напрямую. Дело в том что на форме имеются метки, которые заполняются соответствующей информацией(и картинка получается как бы "многослойной"), а для того чтобы сформировалась одна "картинка" я использовал переменную Tbitmap(если просто выражаться, аналогично операции копирования экрана в Windows), в которую сохранил изображение методом Form.Canvas.CopyRect. То есть Bitmap имеет в себе "фотографию" которую и нужно вывести на печать (а Bitmap копирую на канву объекта Tprinter методом CopyRect). Пробывал использовать PaintTo не получилось, или тут тоже есть своя тонкость.

>>>А еще все может быть проще - у матричного разрешение 72dpi от силы, а у лазерника сколько? 1200? Тогда картинка 100*100 пикселей у него, если принудительно не масштабировать, займет квадрат 2 мм в углу листа :) Вполне вероятно, что автор просто ее не заметил.

Отнюдь. Все прекрасно заметил. Ничего нету. Даже изображения в 1мм :). Проверил. Просто вывел методом Draw на печать без масштабирования. Картинка 5х5 см.

Это еще половина вопроса. Это хорошо если на экране все умещается, а если нет? То есть компонент Image больше по размерам чем экран. Как я ни пробывал, в ClipBoard "фотографируется" все, что есть на экране вместе с Windows, а надо только содержимое клиентской части формы.

С уважением, Василий.


DrPass   (2006-06-10 19:04:00) [4]


>  И что интересно: методом Draw,StrechDraw, CopyRect - на
> матричном распечаталось, а вот лазерный показал "бесконечные
> просторы Tcanvas", то есть ничего на распечатал.

А еще все может быть проще - у матричного разрешение 72dpi от силы, а у лазерника сколько? 1200? Тогда картинка 100*100 пикселей у него, если принудительно не масштабировать, займет квадрат 2 мм в углу листа :) Вполне вероятно, что автор просто ее не заметил


AlexanderMS   (2006-06-10 10:46:00) [5]


>  Теперь мне надо все это "хозяйство" вывести на печать


То есть распечатать содержимое формы, я правильно понимаю? Или, всё-таки, Bitmap?
Ещё есть метод PaintTo(DC: HDC; X, Y: Integer);у объектов TWinControl и его наследников.


> Для этого я создаю переменную типа TBitmapв которую копирую
> полученное  изображение.

Какое именно?

Может, создавать TPicture, а не TBitmap?


Василий   (2006-06-10 06:17:00) [6]

Интересный конечно ответ.

В помощи все просто написано, однако не работает


AlexanderMS   (2006-06-09 10:15:00) [7]

F1


Наверх

Титульная страница Поиск, карта сайта Написать письмо