Приветствую! Речь пойдет о создании программы, которая сможет кодировать информацию в штрих код. Рассмотрим мы два варианта: EAN13 и Code 128.
Для начала разберемся что же предоставляет собой штрих код, и начнем с формата EAN 13. Внешне штрих код состоит из черных и белых полос. Каждая из полос согласно стандарту имеет ширину 0,33мм. А теперь посмотрим немного глубже. Согласно стандарту, информация в штрих коде алгоритмом конвертируется в последовательность нулей и единиц. Черная полоса соответствует «1» а белая соответственно «0». Таким образом мы получаем штрих код. То, что описано выше, справедливо для обоих форматов, а теперь перейдем к специфике форматов. EAN 13 код фактически может иметь 12 символов информации (обычно она разделяется на код страны, код завода, и.т.д., но никто вам не мешает создать штрих код с любыми цифрами). 13 цифра в штрих коде ( а он EAN 13 имеет их именно 13) является контрольной суммой. Она используется для проверки правильности декодирования, а также в зависимости то нее выбирается соответствующая таблица кодирования. Вот и все по формату EAN 13. Детальная информация об алгоритме кодирования и о расчете контрольной цифры есть тут:
Итак, что нам нужно сделать для программной генерации штрих кода (причем обоих форматов):
- Настроить графический интерфейс так, чтоб 1 юниту соответствовало 0.33 мм
- Конвертировать код в двоичную последовательность (из «0» и «1»)
- Отобразить последовательность таким образом что каждая единица- прямоугольник с шириной 0,33 мм. Замечу, что можно изменять величину штриха, но по стандарту сказано 0,33мм.
Создавая программу, я сделал так:
Создал форму, на которой есть поля для выбора формата, ввода кода, регулятор ширины штриха ну и кнопка генерации кода и сохранение изображения в буфер обмена. Получилось так:

Проверял я с помощью Abbyy FineReader 10 Professional:

Каждый из форматов штрих кода я оформил в виде отдельного класа, который из кода образует двоичную последовательность. Кстати, формат EAN 13 мне показался немного тяжелее в реализации в силу того, что там в зависимости от кода меняется таблица. в результате чего сам код рисовался так: