Fórum (problema) Sprites - Transparência no final da exibição. #374927
15/09/2009
0
Venho mais uma vez a perguntar.
Começei a usar Sprites para criar meu primeiro jogo. Porém estou passando por um problema. Em um dos meus programas de testes, o final da exibição do sprite acaba não dando o efeito da transparência. Para que eu n tenha que desenhar um retangulo do tamanho da tela do projeto para atualizar as manchas finais eu precisaria que houvesse tranparência na cor do TBitmap que eu carregar.
Tentei tratar com Thread, porém não surtiu efeito algum, continuou na mesma forma.
Meu código:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
procedure FormClick(Sender: TObject);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
procedure Blow;
public
{ Public declarations }
Tela: Array[1..5] of TBitmap;
Fig: TBitmap;
Tx, Ty: Integer;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TForm1 }
procedure TForm1.Blow;
var
I: Integer;
begin
Fig:= tbitmap.Create;//cria a Figura inteira
Fig.LoadFromFile(´img.bmp´);//carrega a Figura explo que está no c:
for I := 1 to 5 do
begin
Tela[i]:= tbitmap.create;// cria a imagem final
Tela[i].Width:= 40;//diz a largura de cada i
Tela[i].Height:= 40;//diz a altura de cada i
Tela[i].TransparentColor := clWhite;
Tela[i].Transparent := True;
//o bitblt copia uma parte da Figura incial ou seja os is, é aqui o segredo
bitblt(Tela[i].canvas.handle,
0,
0,
40, 40,
Fig.canvas.handle, i*40, 0, SrcCopy);
form1.canvas.draw(Tx-20, Ty-20, Tela[i]);//desenha a Figura na posição x 0 y 0
Sleep(35);
end;
end;
procedure TForm1.FormClick(Sender: TObject);
begin
Blow;
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
Tx := X;
Ty := Y;
end;
end.A imagem tem dimensão de [color=green:77a2f92a78]200x40[/color:77a2f92a78], onde um sprite dela tem [color=green:77a2f92a78]40x40[/color:77a2f92a78], sendo [color=olive:77a2f92a78]5[/color:77a2f92a78] sprites, onde todas estão em sequencia dentro de um bitmap.
O desenho em si é um simulado de uma explosão. faça uma cena de 5 imagens de uma explosão, e no clique no form irá executar a explosão no local do clique.
O problema é que a exibição é perfeito, porém no final fica um quadro (na cor do fundo escolhido pro sprite) branco (que no meu caso é como meu sprite foi feito). [color=blue:77a2f92a78]Alguem sabe como contornar esse problema final da exibição do sprite?????[/color:77a2f92a78]
.lg.
Curtir tópico
+ 0Posts
15/09/2009
.lg.
Gostei + 0
17/09/2009
.lg.
Gostei + 0
17/09/2009
Marcosrocha
Gostei + 0
17/09/2009
.lg.
Muito obrigado.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)