PDA

Ver la Versión Completa : Programa de astrologia


compuin
07-02-2018, 16:31:00
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 (http://www.delphiarea.com/products/delphi-components/simplegraph/) de DelphiArea (http://www.delphiarea.com/). 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
;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 (http://www.delphiarea.com/products/delphi-components/simplegraph/) de DelphiArea (http://www.delphiarea.com/). 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

https://s17.postimg.org/k927tv0u7/screenshot_38.png

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
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:


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