Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Построение сетки из изображений и TPrinter, и отправка на печать... 
:(
    Опции темы
ЧеловекБорща
  Дата 24.6.2013, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 5.6.2010

Репутация: нет
Всего: нет



Доброго времени суток!

Пользователь создает форму для данных и на ней указывает текстовыми метками какие даные куда вставлять.
В роли формы выступает BMP, JPEG, PNG изображение любого размера.
Перед печатью данные из очереди на печать, гуськом проецируются на указанную форму печати.
Теперь имеем дело только с готовыми BMP файлами. 

Далее юзер выбирает шаблон печати, т.е. заранее заданные параметры печати:
Тип/формат бумаги, принтер, ну и конечно же кол-во изображений на лист. 

Например сетка картинок 2x4(2 колонки 4 строки) на 1 лист A4.

Собственно проблема:
Как рисовать изображения сеткой?
 

вот 2 варианта рисования сетки:
Первый:
Код

  var
  iVertLine, i, iHorLine, iCols, iRows, iColsRows: integer;
  z: integer;
begin
  Img.Canvas.Pen.Color := clWhite;
  Img.Canvas.FillRect(Img.BoundsRect);
  z := 25; // Площадь?
  iRows := 4;
  iCols := 4;
  iColsRows := 2;
  Img.Canvas.Pen.Width := 1;
  Img.Canvas.Pen.Color := clBlack;

  for i := 0 to iColsRows do
  begin
    Img.Canvas.MoveTo(0, i * z);
    Img.Canvas.LineTo(iColsRows * z, i * z);
    Img.Canvas.MoveTo(i * z, 0);
    Img.Canvas.LineTo(i * z, iColsRows * z);
  end;


Вместе рисуются и вертикальные и горизонтальные линии, думаю как бы в эту клетку изображение вставить, вот только как?

При таком алгоритме рисование сетки 4x6 невозможно..

А вот так можно рисовать хоть 2x400:
Код

var
  iVertLine, i, iHorLine, iCols, iRows, iColsRows: integer;
  z: integer;
begin
  Img.Canvas.Pen.Color := clWhite;
  Img.Canvas.FillRect(Img.BoundsRect);
  z := 25; // Площадь?
  iRows := 4;
  iCols := 4;
  iColsRows := 2;
  Img.Canvas.Pen.Width := 1;
  Img.Canvas.Pen.Color := clBlack;

    for iHorLine := 0 to iRows do
    begin
    Img.Canvas.MoveTo(0, iHorLine * z);
    Img.Canvas.LineTo(iCols * z, iHorLine * z);
    end;

    // вертикальные
    for iVertLine := 0 to iCols do
    begin
    Img.Canvas.MoveTo(iVertLine * z, 0);
    Img.Canvas.LineTo(iVertLine * z, iRows * z);
    end;


Но я понятия не имею как тут изображение и каким боком вставить....

Может есть способ проще?

В итоге временный TBitmap налезает на Canvas принтера и уходит в печать.  

Это сообщение отредактировал(а) ЧеловекБорща - 24.6.2013, 00:16
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0898 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.