Ver Mensaje Individual
  #13  
Antiguo 27-06-2006
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Reputación: 19
Deiv Va por buen camino
Arrow

Probé el consejo de Seoane con el TImageList, y modifiqué un poco el código para transparentarlo de la siguiente forma:
Código Delphi [-]
var
  Bitmap: TBitmap;
begin
  Bitmap:= TBitmap.Create;
  try
    BitMap.LoadFromFile(FileName);
    ImageList1.Width:= BitMap.Width div 10; // 10 Elementos
    ImageList1.Height:= BitMap.Height;
    ImageList1.BkColor:=clNone;
    ImageList1.BlendColor:= clNone;
    ImageList1.DrawingStyle:= dsTransparent;
    ImageList1.Masked:= True;
    ImageList1.AddMasked(Bitmap, Bitmap.Canvas.Pixels[0,0]);
  finally
    BitMap.Free;
  end;
end;
Funciona bien.
He cargado 2 PaintBox capturando en ellos diferentes trozos del BitMap que tengo:
Código Delphi [-]
   ImageList1.Draw(PaintBox1.Canvas,0,0,0);
   ImageList1.Draw(PaintBox2.Canvas,0,0,1);
Todo bien, he intendado MOVERLOS y cruzar a ambos manteniendo su transparencia con TTimer, y ahí tengo un problemita del cual
no me doy cuenta, y requiero de vuestra ayuda:
Código Delphi [-]
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  PaintBox1.Left:=PaintBox1.Left+2;
  PaintBox1.Repaint;
  ImageList1.Draw(PaintBox1.Canvas,0,0,0);
  PaintBox2.Left:=PaintBox2.Left-2;
  PaintBox2.Repaint;
  ImageList1.Draw(PaintBox2.Canvas,0,0,1);
end;
Necesitaba sobreponer uno sobre el otro en el momento de cruce transparentes. Arriba lo que hace es uno sobrepone al otro
pero sin transparentarlo (lo tapa, o lo cubre). Es decir necesito en el momento de cruce dibujar uno y encima el otro, pero
mostrando ambos ¿Donde voy mal?
Pd.- Tal vez no me estoy dejando entender si el código de arriba no estuviera en un TTimer, y los ubico en posición de cruce
(left) me muestra bien a ambos (sin TTimer) es lo que requiero en realidad pero que eso se vea así al momento de cruce.
Gracias y saludos
Responder Con Cita