![]() |
Imágenes y Transiciones
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 |
¿Qué efecto es el de transición?.. ¿Un Fade?¿O una imagen despaza a la otra?
|
Cualquiera
Cita:
gracias y un saludo |
Una posible solución
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. |
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. ;) |
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 |
Cita:
|
Pertenece a la sección de Efectos y transiciones
Por cierto, uno de esos efectos (no estrictamente una transición) la puedes ver en estos mismos foros al dar click en "Desconectar". // Saludos |
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: |
Muchas gracias
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 |
La franja horaria es GMT +2. Ahora son las 02:12:12. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi