Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Создание графического шрифта для проги.


Автор: Vaskevych 6.4.2012, 12:30
Всем привет.
Вопрос следующий есть изображение:
user posted image
и росшифровка к нему " 0123456"

Как можно отрисовать текст например "00 00".

Автор: Ne1tr1n0 8.4.2012, 13:02
Самый простой вариант - кадрировать изображение в фотошопе (разбить на отдельные цифры, благо они я смотрю одинаковой ширины), хранить изображения цифр в ресурсах, а в проге загружать их в массив и рисовать на канвасе каждую цифру отдельно со сдвигом на ширину цифры, обращаясь к элементам массива по индексу (он будет равен цифре, которую необходимо отрисовать). Если же надо редактировать, эти цифры, или изменять их размеры, то лучше работать с векторными картинками, в частности можно запилить свой шрифт в каком-нить корел драве или одной из других программ для создания шрифтов. 
Вечером может попробую что-нить сваять, сейчас нет под рукой ничего.

Автор: RelictOs 8.4.2012, 17:24
Код

var
  numbers : array[0..9] of TBitmap; //массив картинок
  x : integer; //сдвиг

...

procedure TForm1.FormActivate(Sender: TObject);
begin
 numbers[0] := TBitmap.Create; //создать объект
 numbers[0].LoadFromFile('файл.bmp'); //загрузить из файла
 {и так до 9}
 x := 0; // обнуляем сдвиг по оси х холста формы
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
 case Key of
 '0'..'9':
  begin
   x := x + numbers[strtoint(key)].Width; //увеличиваем х на ширину картинки
   Form1.Canvas.Draw(x,20,numbers[strtoint(key)]); //Рисуем нашу картинку
  end;
 end;
end;


в общих чертах будет выглядеть так. фишки вроде стирания и переноса строки можно реализовать по аналогии

Автор: Akella 8.4.2012, 18:59
А что, нельзя создать стандартный True Type шрифт?

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