Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 055

/ вопрос открыт /

Здравствуйте, уважаемые эксперты!
Вопрос следующий: имеется сформированная картинка в Image, картинка по размеру небольшая 420х260 пикселей.
Необходимо ее напечатать на принтере, в нужном количестве.
Вопрос, в следующем как правильно рассчитать масштаб печати?
Необходимо разместить допустим 3 картинки в ширину и 5 по высоте страницы.
Соответственно, и вопрос как правильно это рассчитать?
Я думаю, что необходимо скопировать указанную картинку несколько раз в новые картинки и уже из них печатать - три раза скопировать в права и три раза вниз ? А затем уже вывести на печать?
Но тут хочется сделать некую универсальность.
Дело в том, что картинка может быть изначально разная по размеру и соответственно необходимо правильно рассчитать размер ? копирование и убирается ли картинка при печати на страницу ?
Подскажите, пожалуйста.

hub2002 Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: 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

hub2002 (статус: Посетитель), 1 марта 2011, 14:19 [#1]:

Уважаемые эксперты, а подскажите, как сдублировать bitmap ?
есть bitmap - необходимо справа и снизу добавить его же...
Что-то не понимаю как сделать...
Вадим К

Вадим К (статус: Академик), 1 марта 2011, 14:40 [#2]:

просто дважды нарисовать?
Галочка "подтверждения прочтения" - вселенское зло.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:42
Выполнено за 0.02 сек.