|
Вопрос # 5 055/ вопрос открыт / |
|
Здравствуйте, уважаемые эксперты!
Вопрос следующий: имеется сформированная картинка в Image, картинка по размеру небольшая 420х260 пикселей.
Необходимо ее напечатать на принтере, в нужном количестве.
Вопрос, в следующем как правильно рассчитать масштаб печати?
Необходимо разместить допустим 3 картинки в ширину и 5 по высоте страницы.
Соответственно, и вопрос как правильно это рассчитать?
Я думаю, что необходимо скопировать указанную картинку несколько раз в новые картинки и уже из них печатать - три раза скопировать в права и три раза вниз ? А затем уже вывести на печать?
Но тут хочется сделать некую универсальность.
Дело в том, что картинка может быть изначально разная по размеру и соответственно необходимо правильно рассчитать размер ? копирование и убирается ли картинка при печати на страницу ?
Подскажите, пожалуйста.
 |
Вопрос задал: hub2002 (статус: Посетитель)
Вопрос отправлен: 28 февраля 2011, 16:05
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Вадим К
Здравствуйте, hub2002!
С принтером можно работать точно так же, как и с обычной канвой. То есть, если можете вывести на канву картинку в заданном количестве и качестве, то проблем нет.
Единственное, что нужно помнить - это то, что канва принтера имеет определенные размеры.
Ближе к практике.
Размеры канвы принтера - Printer.Canvas.Height и Printer.Canvas.width
Нарисовать что то на канве
Printer.Canvas.CopyRect(DestinationRectangle, Image.Canvas, SourceRectangle);
Где
DestinationRectangle - это переменная типа TRect, которая содержит координаты на листе, куда нужно печатать.
Image.Canvas - собственно канва, которая содержит рисунок для вывода.
SourceRectangle - это тоже переменная типа trect, которая указывает, какую часть Image.Canvas нужно выводить.
Что бы быстро инициализировать эти две переменные, делаем так
SourceRectangle := Rect(x_координата_угла, y_координата_угла, ширина, высота);
Собственно, этого предостаточно. Читаем ещё вот это http://www.delphisources.ru/pages/faq/base/save_real_sizes_when_print.html
И на закуску - очень интересный компонент, который может решить большинство проблем http://www.delphiarea.com/products/delphi-components/preview/
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 28 февраля 2011, 16:43
|
Мини-форум вопроса
Всего сообщений: 2; последнее сообщение — 1 марта 2011, 14:40; участников в обсуждении: 2.
28 февраля 2011, 19:08: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Delphi » Алгоритмы, преобразования модератором Ерёмин А.А.
|
hub2002 (статус: Посетитель), 1 марта 2011, 14:19 [#1]:
Уважаемые эксперты, а подскажите, как сдублировать bitmap ?
есть bitmap - необходимо справа и снизу добавить его же...
Что-то не понимаю как сделать...
|
|
Вадим К (статус: Академик), 1 марта 2011, 14:40 [#2]:
просто дважды нарисовать?
Галочка "подтверждения прочтения" - вселенское зло.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|