Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > Font Viewer


Автор: maloicds 20.1.2015, 14:51
Добрый день.

Возникла проблема: для программирования мк необходимо создать русский шрифт. В ручную рисовать муторное занятие.
Обьясню почему:

вот так представлена буква "A"в коде 
Код

0x00, 0x80, 0xE0, 0xF8, 0xFE, 0x1E, 0xFE, 0xF8, 0xE0, 0x80, 0x00, 0x00, 0x1C, 0x1F, 0x0F, 0x07, 0x06, 0x06, 0x06, 0x07, 0x0F, 0x1F, 0x1C, 0x10


а вот так она выглядит если эти значения предствать в другом виде
http://saveimg.ru/show-image.php?id=78356ca6ae86763b0777cbffe6e24b6e

Необходимо отобразить любой символ из шрифта в stringgrid'е например, а дальше по состоянию закрашеных ячеек будет сформирован код для мк.

Например вот так
http://saveimg.ru/show-image.php?id=dfa0079d86b9c071e5b31b644e0e2f38

Куда копать не знаю :(

Автор: Alexeis 20.1.2015, 15:17
maloicds, ну перво-наперво нужно отрисовать весь алфавит на битмапе (объект класса TBitMap) (Canvas.TextOut и все такое)
Если градации серого не нужно, то рекомендую использовать формат  pf1Bit (pixelformat)
 Далее при помощи функций Canvas.TextHeight(); и Canvas.TextWidth(); битмапа определить ширину и высоту нужного символа, а также смещение на картинке.
Используя функцию ScanLine получить доступ к строкам битмапа. Но нужно учитывать что 1 пиксел это 1 бит в формате pf1Bit . Т.е. в одном байте будет 8 пикселов. 
И остается только байты сконвертировать в строки добавив 0x и запятые . Функцией IntToHex . Строку сохраняем в текстовый файл, файл в исходник.
  По всем этим функциям есть куча примеров тут на форуме. При использовании моноширинного шрифта код значительно упрощается.

Автор: maloicds 20.1.2015, 15:48
Alexeis, спасибо, буду пробовать!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)