Fr4: Barcode Vectorization

отредактировано May 2010 Раздел: FastReport 4.0
frxBarcod.pas

Предыстория вопроса такова - нужно получить векторный файл emf/pdf.
В процессе решения для EMF возникли проблемы:

Рисование штрихов:
Непонятно зачем в штрихкодах сделано рисование белым по белому(фону).
Рисование текста:
Для рисования текста сначала рисуется рисуется белый прямоугольник поверх шрихов внутри которого затем выводится текст.
Недостаток этого метода - невозможность сделать св-во Transparent для barcode.
Второй недостаток - при экспорте в EMF большого размера winapi-шный вызов Canvas.StretchDraw(ARect, EMF) глючит. Это
проявляется в позициях больших A4 и выглядит как пропуск команды отрисовки белого прямоугольника упомянутогго выше.
С вариантом отрисовки metafile через PlayEnhMetaFile - те-же бяки.

Я немного подправил ваш "procedure TfrxBarcode.DrawBarcode":
- убрал рисование белым по фону - рисуются только шрихи
- добавил ручное обрезание штрихов (без ExcludeClipRects) в местах вывода текста.
Для этого вызов OutText поставил перед вызовом DoLines. OutText запоминет регионы обрезки, а DoLines затем их учитывает.
- Сделал округление Angle к ближайшим 0,90,180,270
- правки обрамлены как: {+} правка {+.}
- Я избегал использования ExcludeClipRects - т.к. существующие движки конвертирования в PDF не обрабатывают это.

см. изменения в файле:

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.