![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
¿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/ |
|
#2
|
||||
|
||||
|
¿Has probado a activar el doble buffer?
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi! - BAScript - Multi Language Scriptable Development Environment |
|
#3
|
|||
|
|||
|
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.. |
|
#4
|
||||
|
||||
|
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:. 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: . 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. |
|
#5
|
|||
|
|||
|
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... |
![]() |
|
|
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 |
|