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

Вниз

Как вывести несколько спрайтов - одним?   Найти похожие ветки 

 
Zeal ©   (2004-08-10 00:14) [0]

Нужно вывести в DelphiX несколько спрайтов - одним.
Вроде того как:
Текст набранный спрайтовыми буковками побуквенно - вывесте одним спрайтом. Причем достаточно быстро.

Как это сделать - если не сложно распишите подробно для чайника.
(вывод букв по спрайтово я сделал)


 
Zeal ©   (2004-08-10 18:36) [1]

Ну, или имиджами с колор-кеем.

Народ, помогите, очень !

А то при выводе поспрайтового текста ФПС падает раза в 2,5.


 
Megabyte-CeerCop ©   (2004-08-13 16:40) [2]

Я с таким сталкивался. Слушай же:

Есть в DelphiX такой пример, в котором мышью водишь по
форме, и там много синих надписей "DelphiX" появляется.
Там показано как создать независимый Surface.
Так вот когда ты эту сурфасу создашь. Ты сможешь выводить на нее так же как на Ddraw.surface  
Выводи текст на неё, а потом используй как штамп для вывода.


constructor TAutomaticSurface.Create(DXDraw: TCustomDXDraw; Graphic: TGraphic);
begin
 inherited Create;
 FDXDraw := DXDraw;
 FGraphic := Graphic;
 FDXDraw.RegisterNotifyEvent(DXDrawNotifyEvent);
end;
destructor TAutomaticSurface.Destroy;
begin
 if FDXDraw<>nil then
   FDXDraw.UnRegisterNotifyEvent(DXDrawNotifyEvent);
 inherited Destroy;
end;
procedure TAutomaticSurface.DXDrawNotifyEvent(Sender: TCustomDXDraw;
 NotifyType: TDXDrawNotifyType);
begin
 case NotifyType of
   dxntInitialize:
       begin
         FSurface := TDirectDrawSurface.Create(FDXDraw.DDraw);
       end;
   dxntFinalize:
       begin
         FSurface.Free;
         FSurface := nil;
       end;
   dxntRestore:
       begin
         FSurface.LoadFromGraphic(FGraphic);
         FSurface.TransparentColor := FSurface.Pixels[0, 0];
       end;
   dxntDestroying:
       begin
         FDXDraw := nil;
       end;
 end;
end;
//++++++++ Вывод текста из стринга в сурфаску ++++++++++++++++++
procedure TMainForm.MTextout(Txt : string);
var
p:word;
i:byte;
begin

p:=0;
Fsurface[LastTX].Surface.Fill(clwhite);
TXID[LastTX]:= LastTXID;
inc (LastTXID);

for i := 1 to Length(Txt) do
 begin
   fonList.Items.Items[ord (TXT[i])-32].Draw(FSurface[LastTX].FSurface,p,0,0);

p:= p + fonList.Items.Items[ord (TXT[i])-32].Width;
end;
inc (LastTX);
if LastTX>10 then LastTX :=0;

 //применение полученой сурфаски
//DXDraw.Surface.Draw((500-p) div 2,1,FSurface[NumFas].Surface.ClientRect, FSurface[NumFas].Surface, False);

end;

FSurface: TAutomaticSurface; // Пустая сурфаса
  FSurface := TAutomaticSurface.Create(DXDraw, DXDIB1.DIB); //в DIB у меня пустая белая картинка по размеру текста
  FSurface.FSurface.TransparentColor := clWhite;


 

Смотри.


 
Zeal ©   (2004-08-19 01:31) [3]

Спасибо огромное!



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

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

Наверх





Память: 0.46 MB
Время: 0.035 c
6-1097349507
Ralf
2004-10-09 23:18
2004.12.19
Пересылка файлов


14-1101437102
Думкин
2004-11-26 05:45
2004.12.19
С днем рождения! 26 ноября


1-1102338304
JohnS
2004-12-06 16:05
2004.12.19
HTML в окне


4-1099347908
Ded Moroz
2004-11-02 01:25
2004.12.19
Приложение не реагирует на сообщения


3-1100631765
dUM
2004-11-16 22:02
2004.12.19
Сортировка базы + редактирование





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский