![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вывод графического текста Как лучше и правильнее? [Delphi 5]
Borissv © (2004-05-13 11:30:00)Использую DelphiX...
Задача:
- Вывод графического (в виде картинки) текста...
1. Забомбил небольшую процедуру которая переводит строку текста в картинку
с этим текстом:
Procedure DIBFont(Text:String; var ADIB: TDIB);
2. есть элемент в DXImageList, допустим с названием 'dibText'
его Picture при старте программы - пустое...
далее в run-time'е я Assign'ую полученую картинку, но спрайт(c картинкой dibText) который я создаю после этого всё равно не имеет картинки и я знаю почему (не буду расписывать). Значит нужно искать другое решение...
В общем как вообще лучше и правильнее выводить графический текст?
Для каждой буквы свой спрайт чтоли делать? По моему это тоже не выход...
Или неужели прийдётся выводить через Canvas...
Подскажите решение плз...
Borissv (2004-05-13 19:21:00) [1]например:
Procedure DIBFont(Text:String; var ADIB: TDIB);
var
TBMPFont: TBitmap;
TextLen,
i,
X,
FontSize: Integer;
Begin
FontSize:=16;
TextLen:= Length(Text);
Text:= UpperCase(Text);
TBMPFont:= TBitmap.Create;
TBMPFont.LoadFromFile('Font.bmp');
ADIB.SetSize(FontSize*TextLen,FontSize,24);
for i:= 1 To TextLen Do
Begin
X:= (Ord(Text[i])-32)*FontSize;
BitBlt(ADIB.Canvas.Handle,(i-1)*FontSize,0,16,16,TBMPFont.Canvas.Handle,X,0,SRCCOPY);
End;
TBMPFont.Free;
End;
Procedure SetText(var PCI:TPictureCollectionItem;Text:String);
var
FDIB: TDIB;
begin
FDIB:= TDIB.Create;
DIBFont(Text,FDIB);
PCI.Picture.Assign(FDIB);
FDIB.Free;
PCI.Restore;
End;
что то вроде этого...
Можно ещё и вообще без спрайтов, используя второй DXDrawSurface, но пока ещё не разбирался....
В MirGames есть примеры с описанием
zeqfreed (2004-05-13 18:18:00) [2]Хоть бы поделился :)
Borissv (2004-05-13 12:19:00) [3]Закрыто!
Вопрос снят, я нашёл решение....