Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-05-2008
guilloking guilloking is offline
Registrado
 
Registrado: may 2008
Posts: 4
Poder: 0
guilloking Va por buen camino
(Ayuda) Rotar y darle zoom a un shape

Hola miembros del club delphi.

Nesecito una ayuda de parte de ustedes, resulta que soy nuevo en esto, y pues estoy haciendo una animacion donde tengo un shape circulo, y le e agregado botones para que el circulo valla a la izquierda, derecha, arriba y abajo.

Ahora viene el problema, quiero hacer que ese shape circulo rote hacia la izquierda cuando presione el boton, lo mismo con el de rote hacia la derecha, tambien que cuando le de click al boton zoom +, pues se amplie y cuando le de zoom - se achique, y ese es el problema, no se como hacer.

Espero pronta colaboracion por parte de ustedes.

Gracias.
Responder Con Cita
  #2  
Antiguo 26-05-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.278
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por guilloking Ver Mensaje
Ahora viene el problema, quiero hacer que ese shape circulo rote hacia la izquierda cuando presione el boton, lo mismo con el de rote hacia la derecha
A mi me vas a perdonar, pero creo que lo difícil no va a ser rotarlo, sino que alguien se de cuenta de que lo estás rotando...
¿Cómo se rota un shape circular? Si es un cuadro, verás como rota, pero un circulo....


Cita:
Empezado por guilloking Ver Mensaje
tambien que cuando le de click al boton zoom +, pues se amplie y cuando le de zoom - se achique, y ese es el problema, no se como hacer.
En este caso puedes agrandar/reducir el tamaño del Shape manteniendo el mismo centro. Eso te dará sensación de Zoom.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 26-05-2008
guilloking guilloking is offline
Registrado
 
Registrado: may 2008
Posts: 4
Poder: 0
guilloking Va por buen camino
hola neftali, gracias por responder, bueno es cierto lo que dices, pero aun asi como hago para que rote el objeto, sea un shape cualquiera, sea circulo o cuadrado, como seria el codigo para que cuando yo presione el boton rote hacia la izquierda y cuando presione el otro boton rote hacia la derecha, la verdad no tengo ni idea, pues como te digo soy nuevo en delphi.

Como hago eso que tu me dijistes, sobre darle el efecto zoom y de-zoom al shape agrandando y achicando, me podrias explicar como se hace.

De nuevo gracias por responder, y espero que me puedas colaborar en lo que puedas ok.
Responder Con Cita
  #4  
Antiguo 26-05-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.278
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por guilloking Ver Mensaje
Como hago eso que tu me dijistes, sobre darle el efecto zoom y de-zoom al shape agrandando y achicando, me podrias explicar como se hace.
Se trata de que intentes hacerlo. y si tienes problemas preguntes.

Puedes "ampliar" el Shape con este código:
Código Delphi [-]
  Shape1.Left := Shape1.Left - 5;
  Shape1.Top := Shape1.Top - 5;
  Shape1.Height := Shape1.Height + 10;
  Shape1.Width := Shape1.Width + 10;

Para reducir puedes usar algo similar.

Rotar es algo más complejo. Puesto que los componentes estandard no lo permiten, posiblemente lo más práctico sea generar un derivado de TShape que añada esa funcionalidad.
Calculando el centro de la imagen y aplicando senos y cosenos a los puntos de los vértices puedes conseguir calcular los nuevos puntos segun un ángulo de rotación. A partir de ahí deberás dibujar la figura con las nuevas coordenadas.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 27-05-2008
guilloking guilloking is offline
Registrado
 
Registrado: may 2008
Posts: 4
Poder: 0
guilloking Va por buen camino
Gracias por responder, pues como te digo, intente pero no supe como hacerle, voy a intentar con una funcion seno y coseno para ver si puedo hacerlo, lo e echo en c++, pero aun no se como implementar clases en delphi.

Voy a investigar, cualquier duda pues le comento ok.

Gracias.
Responder Con Cita
  #6  
Antiguo 27-05-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Las respuestas que te pudiesen dar en éste hilo, son las mismas a las que te darán aquí, pues son los mismos miembros los que te responderían en ambos casos, no es necesario revivir todos los hilos que traten del mismo tema hasta que te respondan, en ese caso muchos hilos trataria de temas de hace varios años.

Ahora, si deseas deformar un objeto "físicamete" revisa la Api SetWindowRgn
Si deseas girar una imagen revisa el truco 455.

Pero en cualquiera de los casos lo mejor es solo dibujar sin tener que usar pasos adicionales que pueden ser inecesarios, revisa el siguiente code;

Código Delphi [-]
procedure DrawPie(Canvas: TCanvas; X, Y, Size, Dir: Integer);
begin
 case Dir of
  0: Canvas.Pie(X, Y, X + Size, X + Size, X + (Size div 2), 0, X + (Size div 2), 0);                               // up
  1: Canvas.Pie(X, Y, X + Size, X + Size,  0, Y + (Size div 2), 0, Y + (Size div 2));                              // left
  2: Canvas.Pie(X, Y, X + Size, X + Size, X + (Size div 2), Y + (Size div 2), X + (Size div 2), Y + (Size div 2)); // right
  3: Canvas.Pie(X, Y, X + Size, X + Size, X + (Size div 2), Y + Size, X + (Size div 2), Y + Size);                 // down
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 DrawPie(Canvas, 0, 0, 200, 0);
 DrawPie(Canvas, 200, 200, 150, 1);
 DrawPie(Canvas, 350, 350, 100, 2);
 DrawPie(Canvas, 450, 450, 50, 3);
end;

Saludos
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
asignar color a un shape NSL94 Impresión 4 11-07-2007 09:33:04
shape en tabla anubis Varios 12 16-04-2007 12:27:00
Rotar Shape dicatek Gráficos 3 18-07-2006 23:33:37
Ayuda para hacer zoom cbello Gráficos 2 24-05-2006 21:04:47
Shape en DetailBand TONIAM Impresión 1 25-10-2005 17:59:24


La franja horaria es GMT +2. Ahora son las 07:59:51.


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
Copyright 1996-2007 Club Delphi