Fórum (problema) Sprites - Transparência no final da exibição. #374927

15/09/2009

0

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.

Responder

Posts

15/09/2009

.lg.

Esqueci de mencionar, Estou usando o Delphi 2010.


Responder

Gostei + 0

17/09/2009

.lg.

Up.


Responder

Gostei + 0

17/09/2009

Marcosrocha

.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


Responder

Gostei + 0

17/09/2009

.lg.

.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.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar