PDA

Ver la Versión Completa : Imágenes y Transiciones


yusnerqui
30-04-2004, 16:53:14
Hola amigos, intento hacer una pequeña galería de imágenes, tengo un TImage y dos botones "<<Atras" y "Siguiente>>", lo que hago es cargar de disco la siguiente o anterior imágen. Existe la forma de darle un efecto de transición a la imágen al cargarse.

Tengo Delphi 5.

Gracias por adelantado, y un saludo

delphi.com.ar
30-04-2004, 16:57:29
¿Qué efecto es el de transición?.. ¿Un Fade?¿O una imagen despaza a la otra?

yusnerqui
30-04-2004, 17:48:48
¿Qué efecto es el de transición?.. ¿Un Fade?¿O una imagen despaza a la otra?

Bueno no tengo preferencia por ninguno, si me puedes ayudar con el que más fácil te sea, te lo agradecería mucho, y pienso que si me explicas uno pudiera apollarme en ese para yo mismo implementar algunos otros

gracias y un saludo

Turboleta
01-05-2004, 00:12:33
Creo que esta funcion te puede servir:

{* Realiza el fundido de un BMP sobre un cancas de tres formas diferentes *}
{* Hay que deshabilitar Range Checking para evitar un error de fuera de rango *}
{* en ejecución, porque Tcoord se creará dinámicamente *}
{* c= columna; l= línea => coordenadas esquina sup. izquierda *}
procedure fundido(Fondo:Tcanvas;Const Marca:TBitmap;
c,l,Tipo,Espera:integer);
type Tpixels= record
x, y: word // Tipo coordenadas de un pixel
end;
Tcoord= array[0..0] of TPixels; // Array de coordenadas para los pixels
Pcoord= ^TCoord; // Puntero al array
var col,lin: integer;
CTotal,tot,i,ord: longint;
coords: Pcoord; // Del Tipo puntero al array
begin
if (tipo > 3) or (Tipo < 1) then tipo:= 1;
case tipo of
1: begin
CTotal:= marca.width * marca.height; // Total de pixel del BMP
GetMem(Coords, CTotal * SizeOf(TPixels));// Se crea el array dinámicamente
for lin:= 0 to marca.Height - 1 do
for col:= 0 to marca.Width - 1 do
begin // Se guardan en el array todas
Ord:= lin * marca.width + col; // las coord. de todos los pixels
Coords^[ord].x:= col; // del BMP
Coords^[ord].y:= lin;
end; // se guarda en Tot el nº de pixels
tot:= CTotal;
for i:= 0 to CTotal do
begin // Se eligen unas coord. y ese pixel
ord:= Random(Tot); // se copia en el TImage
fondo.pixels[c + Coords^[ord].x, l + Coords^[ord].y]:=
marca.canvas.pixels[Coords^[ord].x,Coords^[ord].y];
Coords^[ord]:= Coords^[tot - 1];
Dec(tot);
if i mod 500 = 0 then
begin
Application.ProcessMessages;
Sleep(espera);
fondo.refresh; // Se repinta el TImage
end
end; // Se libera la men. del array
FreeMem(Coords, CTotal * SizeOf(TPixels));
end;
2: Begin // Se dibuja por líneas, de arriba
for lin:= 0 to marca.Height - 1 do // hacia abajo.
begin
for col:= 0 to marca.Width - 1 do
begin
fondo.pixels[c + col, l + lin]:= marca.canvas.pixels[col,lin];
end;
Application.ProcessMessages;
sleep(espera);
fondo.refresh;
end
end;
3: Begin // Se dibuja por columnas de Izq. a
for col:= 0 to marca.width - 1 do // derecha.
begin
for lin:= 0 to marca.Height - 1 do
begin
fondo.pixels[c + col, l + lin]:= marca.canvas.pixels[col,lin];
end;
sleep(espera);
Application.ProcessMessages;
if col mod 2 = 0 then
fondo.refresh;
end
end
end;
fondo.refresh
end;


¡Ya me contarás qué te parece! Te aseguro que funciona.

jachguate
01-05-2004, 01:41:10
Hola Turboleta. Te recomiendo usar las etiquetas [ code ] o [ delphi ] para que los trozos de código que publiques se vean correctamente indentados, o hasta resaltados (con la segunda).

Podes aprender como usarla, siguiendo el vínculo en mi firma.

Hasta luego.

;)

roman
01-05-2004, 01:48:00
Ahora que lo pienso se me ocurre algo. Si lo que se quiere es hacer una aplicación que simplemente muestre una secuencia de imágenes quizá podría usarse un TWebBrowser aprovechando los efectos de transición de IE.

Mmmm... Creo que me lo voy a intentar yo mismo.

// Saludos

jachguate
01-05-2004, 02:05:30
aprovechando los efectos de transición de IE. :confused: :confused: que efectos??? esos si no me los conozco...

roman
01-05-2004, 02:16:42
Pertenece a la sección de Efectos y transiciones (http://msdn.microsoft.com/workshop/author/filter/reference/reference.asp)

Por cierto, uno de esos efectos (no estrictamente una transición) la puedes ver en estos mismos foros al dar click en "Desconectar".

// Saludos

jachguate
01-05-2004, 02:49:59
que bonito... que bonito!!!

No tenia idea del asunto, y como ya no entro a IE mas que para comparar como se ven algunas web's... pues todavia tenia la cookie del club en él, y he aprovechado para desconectarme totalmente...

Interesantes efectos... :eek: :eek:

yusnerqui
03-05-2004, 15:01:42
Quiero agradecer por las respuestas, y a la vez pedir disculpa por mi tardansa en responder, pero es que me conecto solo desde el trabajo y no vine por acá el fin de semana, probaré los ejemplos que me dieron. Muchas gracias de nuevo.

Un saludo