(problema) Sprites - Transparência no final da exibição.

Delphi

15/09/2009

Ola Delphianos fanaticos. :lol:

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.

.lg.

Curtidas 0

Respostas

.lg.

.lg.

15/09/2009

Esqueci de mencionar, Estou usando o Delphi 2010.


GOSTEI 0
.lg.

.lg.

15/09/2009

Up.


GOSTEI 0
Marcosrocha

Marcosrocha

15/09/2009

.lg. eu tenho um exemplo de manipulação de spirites com justamente o que você precisa. O arquivo chama GDISPR.ZIP, se você não encontrar, me mande uma Mensagem Particular que eu pego seu email e te mando. Abraços


GOSTEI 0
.lg.

.lg.

15/09/2009

.lg. eu tenho um exemplo de manipulação de spirites com justamente o que você precisa. O arquivo chama GDISPR.ZIP, se você não encontrar, me mande uma Mensagem Particular que eu pego seu email e te mando. Abraços
achei sim, vou dar uma estudada nele.
Muito obrigado.


GOSTEI 0
POSTAR