Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-06-2010
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 24
JXJ Va por buen camino
¿mover imagenes?

¿como se pude mover imagenes de arriba abajo derecha izquierda?

quiero hacer una aplicacion done pueda poner imagenes
ya sean png, jpg, gif. si son png con transparencias

en un form o dentro de un panel que ahi se muevan y no se vean
rastros de su movimiento

algo como esta web

http://joomla15.joomvision.com/jv_thrina/
Responder Con Cita
  #2  
Antiguo 09-06-2010
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.025
Poder: 27
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
¿Has probado a activar el doble buffer?
Responder Con Cita
  #3  
Antiguo 17-06-2010
FENIXadr FENIXadr is offline
Miembro
 
Registrado: may 2010
Ubicación: Córdoba - Cba. - Argentina
Posts: 104
Poder: 17
FENIXadr Va por buen camino
Mezclar imagenes

Hola JXJ.... existe una rutina muy interesante de un tal Yurii Zhukow que te permite mezclar 2 puntos en RGB mediante un valor de Alpha a una velocidad más que aceptable...
Acá te dejo la rutina con una pequeña modificación porque restaba 1 a cada color cada vez que hacías una mezcla.. mi aporte es nada comparado con lo brillante de la rutina del señor Zhukow

function MixBytes(FG, BG, TRANS: byte): byte;
asm
push bx // push some regs
push cx
push dx
mov DH,TRANS // remembering Transparency value (or Opacity - as you like)
mov BL,FG // filling registers with our values
mov AL,DH // BL = ForeGround (FG)
mov CL,BG // CL = BackGround (BG)
xor AH,AH // Clear High-order parts of regs
xor BH,BH
xor CH,CH
mul BL // AX=AL*BL
mov BX,AX // BX=AX
xor AH,AH
mov AL,DH
xor AL,$FF // AX=(255-TRANS)
mul CL // AX=AL*CL
add AX,BX // AX=AX+BX
and AL, 1 // ----> Agregado por FENIXadr
add AH, AL // ----> Agregado por FENIXadr
shr AX,8 // Fine! Here we have mixed value in AL
pop dx // Hm... No rubbish after us, ok?
pop cx
pop bx // Bye, dear Assembler - we go home to Delphi!
end;


una vez que tengas esta rutina, podrás usarla de la siguiente manera:



type

TRGBTripleArray = array[word] of TRGBTriple; // "TRGBTriple" está en la Unit "Windows"
PRGBTripleArray = ^TRGBTripleArray;
........
.........
.......
Procedure TForm1.Button1Click(Sender: TObject);
var x, y : Integer;
ScanFrom, ScanTo : PRGBTripleArray;
Alpha : Byte;
begin
Img1.PixelFormat := pf24Bit; // MUY IMPORTANTE
Img2.PixelFormat := pf24Bit; // MUY IMPORTANTE
// Img1 e Img2 son de tipo TBitMap

Alpha := 128;

for y := 0 to Img1.Height - 1 do
begin
ScanFrom := Img1.ScanLine[y];
ScanTo := Img2.ScanLine[y];
for x := 0 to Img1.Width - 1 do
begin
ScanTo[x].rgbtBlue := MixBytes (ScanTo[x].rgbtBlue, ScanFrom[x].rgbtBlue, Alpha);
ScanTo[x].rgbtGreen := MixBytes (ScanTo[x].rgbtGreen, ScanFrom[x].rgbtGreen, Alpha);
ScanTo[x].rgbtRed := MixBytes (ScanTo[x].rgbtRed, ScanFrom[x].rgbtRed, Alpha);
end;
end;
end;


De esta manera ya puedes mezclar dos imágenes con solo modificar Alpha de 0 a 255, que las imágenes suban, bajen, se dezplacen hacia un lado u otro dependerá de tu código.
Solo dos cosas hay que tenes en cuenta :
Primero:
Como puse arriba muy importante la propiedad PixelFormat debe ser pf24Bit sino funcionan muy mal los ScanLine`s

Y Segundo :
Que los ScanLine's no salgan fuera de la imagen porque se genera un error..

Espero que esto te ayude, cualquier cosa por aca andamos..
Responder Con Cita
  #4  
Antiguo 17-06-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 19
rgstuamigo Va por buen camino
Arrow

Si de lo que se trata es de mover con el mouse, imágenes contenidas en un TImage pues puedes utilizar el evento OnMouseMove del TImage y poner el siguiente código:
Código Delphi [-]
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if ssLeft in Shift then
   begin
    Image1.left := Image1.left+x;
    Image1.Top := Image1.Top+y;
   end;
end;
.
En todo caso si el Componente TImage tuviera la propiedad "Handle" pues sería mas fácil aún , pero como no lo tiene ya que es un derivado o descendiente de la clase "TGraphicControl", pues con el anterior código se logra el objetivo.. En cambio todos aquellos componentes que tienen una propiedad "Handle" pues para poder moverlo con el mouse en tiempo de ejecucion se puede utilizar el mismo evento OnMouseMove del componente en cuestión y poner un código similar al siguiente:
Por ejemplo vamos a mover un Boton en tiempo de ejecucion:
Utilizando su respectivo evento OnMouseMove tenemos:
Código Delphi [-]
procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  ReleaseCapture;
  SendMessage(Button1.Handle, WM_SYSCOMMAND, $F012, 0);
end;
.
Eso es todo.
POSDATA: Ustedes pueden notar la diferencia visual entre ambos ejemplos al mover con el raton.
El primer ejemplo se puede aplicar a cualquier componente visual, pero el segundo sólo a componentes que tienen Handle.
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 17-06-2010 a las 20:47:36.
Responder Con Cita
  #5  
Antiguo 21-06-2010
FENIXadr FENIXadr is offline
Miembro
 
Registrado: may 2010
Ubicación: Córdoba - Cba. - Argentina
Posts: 104
Poder: 17
FENIXadr Va por buen camino
Mover Imagenes

Hola JXJ... No se si te sirvió la rutina que puse los otros días.. de todos modos me he tomado un tiempito para hacerte un ejemplo que simula el efecto de la página que mensionaste. El corazón de este ejemplo es la rutina de nuestro amigo Zhukow.
Aqui te dejo los adjuntos...
Saludos.

PD: por cuestion de tamaño solo pude subir los fuentes... las imagenes podes bajarlas directamente de la paguina que mencionaste al principio haciendo click derecho cuando el efecto se termina, para poder bajar las dos imagenes.
El código que te doy las llama "imagen1.jpg" e "imagen2.jpg" respectivamente y deben estar an la carpeta donde estan los fuentes.
Por cualquier duda aqui estamos...
Archivos Adjuntos
Tipo de Archivo: zip Mezcla.zip (8,8 KB, 67 visitas)
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Mover imagenes creadas en tiempo de ejecucion en lazarus Guy Fawkes Lazarus, FreePascal, Kylix, etc. 1 14-01-2010 19:09:14
Mover archivo REHome .NET 5 22-05-2007 09:52:24
mover el focus ercrizeporta Varios 3 01-10-2006 00:38:42
Mover componentes Perrero80 OOP 4 17-05-2006 11:47:40
Impedir mover el form y redimensionar al mover barra tareas jealousy API de Windows 0 15-06-2004 12:58:05


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


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