Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2004.12.26;
Скачать: [xml.tar.bz2];

Вниз

Как ввести в игру свой шрифт? Стандартными средствами Delphi7.   Найти похожие ветки 

 
Creep   (2004-08-23 21:28) [0]

Как ввести в игру свой шрифт? Стандартными средствами Delphi7.


 
Zeqfreed ©   (2004-08-23 21:45) [1]

Хех... а как ты хочешь, чтобы он был реализован, так и вводи =)
Игра-то хоть на чем? и какой шрифт надо?


 
Creep   (2004-08-23 22:11) [2]

Игра также стандартными средствами delphi сделана учусь пока.
Можно былобы сделать BMP шник с шрифтом как в WINAMP, а потом  выводить. Только как?


 
gg_no_re   (2004-08-23 22:15) [3]

>а потом выводить. Только как?

средствами Delphi


 
Zeqfreed ©   (2004-08-23 22:27) [4]

BitBlt


 
Петр   (2004-08-23 22:48) [5]

Идите на хуй!


 
gg_no_re   (2004-08-24 02:07) [6]

=))) я так понял это Creep :D


 
gg_no_re   (2004-08-24 02:09) [7]

=))) я так понял это Creep :D


 
Megabyte-Ceercop ©   (2004-08-24 09:51) [8]

Проще всего - сделать все буквы одинаковой ширины, и выстроить их в цепочку в bmp.

c : byte; //код символа
Image : Tbitmap; //картина со шрифтом.

Rect.Left:= (c - 32)* SymbolWeight;
Rect.Right:= Rect.Left + SymbolWeight;
Rect.Top:= 0;
Rect.Bottom:= Image.Height;

//Получен ректангил указывающий на нужный символ, а как им пользоваться думай сам.


 
Servelat ©   (2004-08-24 18:39) [9]

Ну тут еще стоит добавить, что в bmp"шнике должны быть все символы, начиная с символа с кодом 32  (по коду Megabyte"а). И еще, очень желательно хранить ширину каждого символа (например, в массиве). А то так шрифт получится с фиксированной шириной, не красиво.
Кстати, я мучал графические шрифты. но, боюсь, примерчик смогу найти только под DirectDraw.
И еще, вот сюда зайди, тут про шрифты статья была (для DelphiX): www.mirgames.ru


 
Creep   (2004-08-24 19:24) [10]

Спасибо щас ченибудь попробую.


 
cyborg ©   (2004-08-24 20:39) [11]

Как я в Чебураторе сделал, в меню Фрипаскаля или Турбопаскаля или подобной программы есть пункт "Таблица символов". Устанавливаешь шрифт и размер шрифта окну программы в требуемый,  вызываешь таблицу и делаешь копию экрана, затем окошечко со шрифтом сохраняешь в файлик :).
Получается шрифт 32х8 символов.


 
cyborg ©   (2004-08-24 20:43) [12]

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


 
Creep   (2004-08-24 21:35) [13]

Кстати gg_no_re только щас дошло про
> =))) я так понял это Creep :D
До сих пор смеюсь


 
Zer0 ©   (2004-08-24 21:54) [14]

кто-нить знает как растеризовать шрифт срествами WinAPI?
GetGlyphOutline сопротивляется изо всех сил =(
скажу большой сенкс камраду который приведет кусок кода который бы работал в консольном приложении.


 
Megabyte-Ceercop ©   (2004-08-25 07:35) [15]

Servelat ©   (24.08.04 18:39) [9]
Ну тут еще стоит добавить, что в bmp"шнике должны быть все символы, начиная с символа с кодом 32  (по коду Megabyte"а). И еще, очень желательно хранить ширину каждого символа (например, в массиве). А то так шрифт получится с фиксированной шириной, не красиво.


Ну тогда еще к ширине нужно прибавить и точку начала символа.
Чтобы долго не суммировать все предыдущие ширины символов.
Я в Киркопе так делал.


 
Zer0 ©   (2004-08-25 09:52) [16]

http://www.policyalmanac.org/games/aStarTutorial.htm
http://theory.stanford.edu/~amitp/GameProgramming/
еще архивчик из gdmag, выложу попозже =)


 
Sapersky   (2004-08-25 12:35) [17]

кто-нить знает как растеризовать шрифт срествами WinAPI?
GetGlyphOutline сопротивляется изо всех сил =(


Не совсем понял... Растеризовать - получить растр (битмап со шрифтом)? Тогда TextOut :)
Если получить векторный контур - тогда через пути (paths) можно. См. на DelphiGFX последнюю демку.


 
Servelat ©   (2004-08-25 17:14) [18]


> Ну тогда еще к ширине нужно прибавить и точку начала символа.
> Чтобы долго не суммировать все предыдущие ширины символов.

Не совсем понял о чем ты, я ничего больше не записывал в файл шрифта, только ширину, а откуда выводить легко рассчитывается. У меня это было примерно так:


 dlina:=X;
 for i:=1 to Length(Text) do
 begin
   GP.Find(Font).PaintTo(Buffer, dlina, Y, ord(Text[i]));
   Inc(dlina, FontList[num].w[ord(Text[i])]);
 end;


Там строчка, начинающаяся на GP.Find... отвечает собственно за вывод на экран, последний параметр - номер тайла (куска, бишь символа) для вывода, второй и третий - координаты. Не знаю, зачем хранить еще какую-то точку начала символа. Кстати, я все символы хранил, не обрезая первые 32.


 
Servelat ©   (2004-08-25 17:34) [19]

2 Megabyte-Ceercop ©
Прочитал еще раз и понял о чем ты. Мне кажется удобнее так (я так делал):
все символы вписаны в квадратики с одинаковым ребром, соответственно доступ к каждому из них тем же DelphiX"ом или иными средствами получить легко. А вот чтобы расстояние между символами было соответственно их реальной ширине, я и хранил ширину каждого символа.


 
Megabyte-Ceercop ©   (2004-08-26 06:08) [20]

Мой способ какраз на случай, когда ширина символов разная.

Inc(Dlina) подходит для отслеживания точки вывода на экране, это бесспорно, но чтобы найти точку начала символа в битмапе, быстрее взять её из заранее прощитаного массива.



Страницы: 1 вся ветка

Форум: "Игры";
Текущий архив: 2004.12.26;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.05 c
14-1102255989
Cheater
2004-12-05 17:13
2004.12.26
Вопросы по информатике (сложные).


3-1101379348
Frozzen
2004-11-25 13:42
2004.12.26
Позиционирование в ДБГриде


14-1102569135
ms
2004-12-09 08:12
2004.12.26
Вопрос по VC++.NET


1-1102682085
xman
2004-12-10 15:34
2004.12.26
TImage


9-1093434182
бобомен
2004-08-25 15:43
2004.12.26
массив спрайтов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский