Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Красивое оформление [Delphi, Windows]


Cash ©   (2004-02-25 12:25:00) 

DelphiX
У меня есть некая строка, нужно ее показать, но не с помощью TexOut, а при помощи битмэпных щрифтов. Как это сделать, и мжно ли в виде спрайта.


Cash   (2004-03-05 16:01:00) [1]

cyborg ©   (25.02.04 15:06) [3]: Ok, ясненько.
Я ваще имел ввиду: TText = Class(TImageSprite).
Но потом всеже сделал именно так.
ВСЕМ СПАСИБО.


TButton   (2004-02-26 20:26:00) [2]

всю жизнь спрайтами текст выводил, пока мне про WinApiшные функции (для етих целей) не сказали :))))))


Darthman   (2004-02-26 15:28:00) [3]

У меня собственный модуль под это дело был... могу поискать, если надо.


Thor   (2004-02-26 15:26:00) [4]

специально для DelphiX есть компанент под шрифт битмапный.
вроде есть вместе с UnDelphiX


cyborg   (2004-02-25 15:06:00) [5]

Создай спрайт со шрифтом, например по 32 символа в строке, делается это просто, во Фрипаскале, возможно даже и в Турбопаскале в меню есть показать таблицу символов, делается скриншот экрана и уаля :), шрифт готов, какой размер нужен, такой шрифт окну и поставь.
Выводить примерно так, я тут немного кастрировал, может чего не заработает :)

Procedure ShowText(X,Y : Longint; Text : String; Center : Boolean);
Var
 I,L,CX,CY : Longint;
 B : Byte;
begin
 L:=Length(Text); //Длина строки

 if Center then X:=X-((L*ширина_символа) shr 1);

 For I:=1 to L do
 begin
   B:=Byte(Text[i]);
   CY:=(B shr 5) * высота_символа;
   CX:=(B-((B shr 5) shl 5)) * ширина_символа;

   SetRect(TRect,CX,CY,CX+ширина_символа,CY+высота_символа);

тут выводиш функцией BltFast прямоугольник TRect из поверхности шрифта на экран с координатами X,Y

   Inc(X,ширина символа);
 end;
end;


Можно конечно пооптимизировать немного, но и так сойдёт ;)


Cash   (2004-02-25 12:38:00) [6]

А че, в виде спрайта не получится?


Anatoly Podgoretsky   (2004-02-25 12:32:00) [7]

Font and Text Functions из WinApi


Наверх

Титульная страница Поиск, карта сайта Написать письмо