Форум: "Начинающим";
Текущий архив: 2006.07.02;
Скачать: [xml.tar.bz2];
ВнизРабота печати через "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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.078 c