Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Programa de astrologia (https://www.clubdelphi.com/foros/showthread.php?t=92801)

compuin 07-02-2018 16:31:00

Programa de astrologia
 
Buenos dias foro,

Llevo poco tiempo en Delphi pero estoy necesitando de la experiencia de alguien que haya trabajado con algun programa de astrologia. Mi necesidad es crear la rueda y colocar las imagenes de los planetas en ella, los calculos los tengo ya hecho en algoritmos de astronomia.

Si alguien me pudiera orientar le estare muy agradecido. Anexo una imagen de lo que estoy necesitando realizar

Neftali [Germán.Estévez] 07-02-2018 17:33:10

La imagen no aparece. Tal vez no tengas permisos para ello.
Prueba a colocarla como attachment, si te deja.

En cuanto a tu pregunta (aun sin ver la imagen) te recomiendo que revises las demos del componente TSimpleGraph de DelphiArea. Lo he usado y lo he recomendado varias veces porque funciona muy bien. Es gratuíto y con código fuente y puedes compilarlo desde versiones D6 hasta las últimas sin problemas.

compuin 07-02-2018 17:54:56

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 524405)
La imagen no aparece. Tal vez no tengas permisos para ello.
Prueba a colocarla como attachment, si te deja.

En cuanto a tu pregunta (aun sin ver la imagen) te recomiendo que revises las demos del componente TSimpleGraph de DelphiArea. Lo he usado y lo he recomendado varias veces porque funciona muy bien. Es gratuíto y con código fuente y puedes compilarlo desde versiones D6 hasta las últimas sin problemas.


Hola, aca te dejo el attachment de lo que necesito hacer

Pense en TImage y Canvas para ello


gatosoft 07-02-2018 23:43:22

Al igual que Neftalí, recomiendo siempre TSimpleGraph, que además, si tienes tiempo puedes personalizar algunas de sus formas nativos...

sin embargo, después de ver la imagen, creo que no es el componente que necesitas (aunque igual podrías conseguirlo)

Yo te recomiendo seguir con tu idea original ... pintar en el Lienzo directamente (tCanvas)... es bastante trabajo, pero puedes hacer tus propias rutinas para facilitarlo...

compuin 08-02-2018 03:08:35

Gracias por sus respuestas

Como podria yo crear un Canvas en TImage y centrar este Canvas en TImage ?

Algun ejemplo de como hacerlo?

Neftali [Germán.Estévez] 08-02-2018 15:12:44

Cita:

Empezado por gatosoft (Mensaje 524429)
sin embargo, después de ver la imagen, creo que no es el componente que necesitas (aunque igual podrías conseguirlo)
Yo te recomiendo seguir con tu idea original ... pintar en el Lienzo directamente (tCanvas)... es bastante trabajo, pero puedes hacer tus propias rutinas para facilitarlo...

En este caso y viendo la imagen coincido con [gatosoft], el componente no se va a facilitar mucho.
Más vale que pintes directamente sobre el canvas.

Por ejemplo, un código que te puede servir para probar algunas cosas y ver si te sirve es el siguiente:

(1) Crea un formulario
(2) Coloca un TImage y en Alineación selecciona alClient.
(3) En el evento OnShow del formulario pon lo siguiente:

Código Delphi [-]
var
  r1:TRect;
  center, pos:TPoint;
  i, angle, radioExt, radioInt:Integer;
  delta:double;
begin
  // Fondo
  Image1.Canvas.Brush.Color := clInfoBk;
  Image1.Canvas.FillRect(Image1.Canvas.ClipRect);
  // Circulo exterior
  Image1.Canvas.Pen.Color := clBlue;
  r1 := Image1.Canvas.ClipRect;
  r1.Width := Min(r1.Width, r1.Height);     // hacerlo cuadrado

  center.X := (r1.Width DIV 2); Center.Y := (r1.Height DIV 2);

  InflateRect(r1, -20, -20);  // 20 más pequeño
  Image1.Canvas.Ellipse(r1);
  radioExt := (r1.Width DIV 2); //Radio exterior

  InflateRect(r1, -40, -40);  // 40 más pequeño
  Image1.Canvas.Ellipse(r1);
  radioInt := (r1.Width DIV 2); //Radio exterior

  Image1.Canvas.Pen.Color := clGray;
  InflateRect(r1, -5, -5);  // 40 más pequeño
  Image1.Canvas.Ellipse(r1);

  // Pintar la parte interior
  Image1.Canvas.Brush.Color := clWhite;
  Image1.Canvas.FloodFill((r1.Width DIV 2), (r1.Height DIV 2), clBlue, fsBorder);

  // Pintar las secciones
  Image1.Canvas.Pen.Color := clRed;

  // Divisiones del aro (12)
  for i := 0 to 11 do begin
    angle := i*30;  // en grados
    delta := ((angle-90)*pi/180);
    ...
    ... Pintar las secciones...
    
  end;

compuin 08-02-2018 15:46:59

Gracias,

Voy a intentar realizarlo


La franja horaria es GMT +2. Ahora son las 15:52:26.

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