Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.02;
Скачать: CL | DM;

Вниз

Работа печати через "Begindoc...EndDoc"   Найти похожие ветки 

 
Василий   (2006-06-09 05:46) [0]

Здравствуйте, уважаемые мастера. Столкнулся с очень интересным вопросом касательно вывода графики на печать. Вот в чем дело.
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. Может здесь есть какие-то тонкости при использовании данных операторов.

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


 
AlexanderMS ©   (2006-06-09 10:15) [1]

F1


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

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

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


 
AlexanderMS ©   (2006-06-10 10:46) [3]


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


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


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

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

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


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


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

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


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

>>> То есть распечатать содержимое формы, я правильно понимаю? Или, всё- таки, 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, а надо только содержимое клиентской части формы.

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


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

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


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

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

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

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



Страницы: 1 вся ветка

Текущий архив: 2006.07.02;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.05 c
2-1148205577
mefodiy
2006-05-21 13:59
2006.07.02
Вывод знаков псевдографики в RichEdit


15-1148544478
Agent13
2006-05-25 12:07
2006.07.02
2007 Microsoft Office System Beta 2


2-1150120145
VitV
2006-06-12 17:49
2006.07.02
Delphi+interbase


15-1149585343
Ribachok
2006-06-06 13:15
2006.07.02
Создание отчёта


10-1121155518
Sinsin
2005-07-12 12:05
2006.07.02
Как можно узнать, был ли запущен сервер вручную?