Форум: "Игры";
Текущий архив: 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