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