Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   ¿Como hacer una secuencia de imagenes? (https://www.clubdelphi.com/foros/showthread.php?t=88152)

viejinho 19-04-2015 04:42:46

¿Como hacer una secuencia de imagenes?
 
Hola, me gustaría hacer una secuencia de imagenes, como si se tratara de una imagen gif, ya lo hice con una imagen gif pero el gif pierde un poco de calidad de imagen, por eso me gustaría mejor que se cargaran imagenes jpg o png y que cambiaran cada cierto tiempo.

Ejemplo:
Aparece imagen 1, dura 5 segundos y aparece la imagen 2, dura otros 5 segundos y aparece la imagen 3, dura 5 segundos y aparece imagen 1 y se repite infinitamente.

De antemano muchas gracias.

nlsgarcia 19-04-2015 06:16:38

viejinho,

Cita:

Empezado por viejinho
...¿Como hacer una secuencia de imágenes?...

:rolleyes:

Revisa este código:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, jpeg;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

const
  ImagePath : String = 'D:\NASA\NASA Universe-5\';
  ImageArray : Array[0..4] of String = ('Universe-1.jpg','Universe-2.jpg','Universe-3.jpg','Universe-4.jpg','Universe-5.jpg');

var
  Form1: TForm1;
  i : Byte = 0;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
   Image1.Center := True;
   Image1.Stretch := True;
   Image1.Picture.LoadFromFile(ImagePath + ImageArray[0]);
   Timer1.Interval := 1000;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
   if i < High(ImageArray) then
   begin
      Image1.Picture.LoadFromFile(ImagePath + ImageArray[i+1]);
      Inc(i);
   end   
   else
   begin
      i := 0;
      Image1.Picture.LoadFromFile(ImagePath + ImageArray[i]);
   end;
end;

end.
El código anterior en Delphi 7 sobre Windows 7 Professional x32, Visualiza una secuencia de imágenes en intervalos de un segundo, como se muestra en la siguiente imagen:



Espero sea útil :)

Nelson.

Lepe 19-04-2015 17:43:02

Muy bueno el ejemplo, pero la última parte me gusta menos... ¿qué tal esto?
Código Delphi [-]
procedure TForm1.Timer1Timer(Sender: TObject);
begin
   i := (i+1) mod length(ImageArray);
   Image1.Picture.LoadFromFile(ImagePath + ImageArray[i]);
end;

nlsgarcia 19-04-2015 18:07:48

Lepe,

Cita:

Empezado por Lepe
...¿qué tal esto? (Aritmética Modular)...

^\||/

Nelson.

viejinho 20-04-2015 08:56:09

Mucha gracias a los 2, la verdad yo soy muy principiante en esto y me gustaría saber que pongo en esta parte

Código Delphi [-]
private
    { Private declarations }
  public
    { Public declarations }
  end;

ecfisa 20-04-2015 11:46:48

Hola viejinho.
Cita:

Empezado por viejinho (Mensaje 491546)
Mucha gracias a los 2, la verdad yo soy muy principiante en esto y me gustaría saber que pongo en esta parte

Código Delphi [-]
private
    { Private declarations }
  public
    { Public declarations }
  end;

Para este ejemplo no necesitas poner nada mas. Tál como te lo ha escrito nlsgarcia en el mensaje #2 funciona correctamente.

Te convendría reemplazar el código del evento Timer1Timer por la optimización que hizo Lepe en el en el mensaje #3.

Saludos :)


La franja horaria es GMT +2. Ahora son las 06:06:42.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi