![]() |
Centrar ellipse en TImage
Buenas noches foro
Estoy tratando de colocar un circulo a traves de una ellipse en un TImage pero por mas que lo intento no logro que me quede completamente centrado El TImage tiene estas dimensiones
En cuanto al circulo, lo estoy realizando con estas dimensiones
Segun he leido, los 2 ultimos valores son el alto y largo del circulo pero con los 2 primeros trato de posicionarlo en el centro del TImage pero no funciona. So estos valores como una coordenada? Cual es la manera correcta de posicionarlo? Gracias de antemano |
La única vez que hice algo parecido los parámetros indicaban otra cosa: las coordenadas del rectángulo en el que está inscrita la elipse, vértice superior izquierdo, vértice inferior derecho.
Supongo que ese procedimiento estará sobrecargado, asegúrate de estar usando la versión que te interesa o prueba otra a ver si se ajusta más a lo que necesitas. |
En estos casos el refrán de, "Una imagen vale más que 1000 palabras", vendría muy bien.
;););) También me queda la duda de si el procedimiento que estás utilizando es el de TCanvas. |
Cita:
En un instante subo la imagen |
Si usas el camvas de la imagen, puedes usar algo como esto:
Si usas el del formulario, tendrás que ajustar esas coordenadas. |
|
Cita:
Con este codigo aun no logra centrar el circulo |
A mi me sale centrado.
En negrio el original, en rojo el que te he puesto. ![]() |
Ok,
Agregandolo asi me dice "too many actual parameters"
|
1 Archivos Adjunto(s)
¿Puedes poner un poco más de código?
Es que no se dónde estás poniendo esas líneas. ¿Dentro del formulario FormMain? ¿En otra Unit? ¿Estás usando eso dentro de un With? Te adjunto el ejemplo. |
En otra Unit
La unit donde esta definido el formulario se llama Unit1 El formulario es asi
El image es asi
El codigo para crear la rueda esta en una unit que se llama charts Y el codigo para tratar de crearla es
Espero haberme hecho entender mejor :) |
Elimina el primer parámetro.
Todo el problema lo rienes por meter esas líneas dntro de un with. Te está cogiendo el Ellipse del Canvas de TImage. La otra opción es dejar el with y colocar esto:
Con eso te compilará bien. |
Gracias Neftali
No se si sirva de algo pero estoy utilizando Borland Delphi 7, asi que algunas instrucciones no me estan funcionando adecuadamente |
Cita:
: Too many actual parameters |
Hola.
Fijate si te sirve de este modo: Ejemplo de llamada:
Salida: ![]() Saludos :) |
|
Hola.
Cambiá por ShowMessage, v.gr. :
Saludos :) |
|
Hola.
Y... ¿ No estará fuera del rango ? Si no te importa que se corte el ellipse, eliminá las líneas de comprobación de este modo:
Saludos :) |
Como le establezo el rango ?
|
Hola.
A ver, si tenes una imágen de 10 x 10 y dibujas un círculo de 15 x 15 es seguro que no se va a enmarcar en el primero. Lo normal es que el lienzo donde dibujas, sea superior a la imágen que intentas dibujar. De allí la verificación del if ... then y el consiguiente mensaje. Pero todo eso si interpreté bién lo que estas buscando hacer... Saludos :) |
Pues ni reduciendole las dimensiones al elipse me funciona
|
1 Archivos Adjunto(s)
Hola.
Funciona correcto en mi caso. Lamento no tener Delphi 7 pero despues de haberlo usado por cerca de dos décadas te puedo asegurar que el código funcionará en esa versión también. Lo mas que puedo hacer es adjuntarte el código funcionando en Delphi 10.3 para que puedas extraer de allí lo que te sirva. Solo crea una carpeta y extraé el comprimido allí. Saludos :) |
1 Archivos Adjunto(s)
Cita:
Es muy similar, lo único que cambian son las units. Este que te adjunto está en Delphi7 y funciona. |
Hola neptali,
Ya probe el ejemplo que me enviastes para D7 pero este no queda circular y sus bordes quedan pegados a los bordes del TImage :confused: |
|
1 Archivos Adjunto(s)
Cita:
Con unas pequeñas modificaciones en los puntos de dibujo debería centrarse. NOTA:el código del ejemplo de puede optimizar para eliminar operaciones repetidas. |
Ya lo intente no tuve exito
|
Hola.
Cita:
Saludos :) |
Cita:
La imagen que has colocado no se ve. Si necesitas un margen en el círculo, sólo debes sumarselo a las 2 primeras Coordenadas (x1, y1) y restárselo a las 2 segundas (x2, y2). |
Cita:
|
Cita:
Cita:
La misma cantidad. Sumar a las 2 primeras, restar a las 2 segundas. |
Cita:
Donde consigo esas coordenadas (x1,x2 y y1,y2) ? |
Hola.
Cita:
Cita:
|
Hola
Pero estoy usando este codigo que es el que me ha funcionado mejor a mi necesidad
Como lo ajusto aqui ? |
Hola.
Cita:
Saludos :) |
Ahora me confundi
Esta linea genera un circulo que no esta centrado La segunda parte del codigo genera el circulo centrado pero tocando los bordes de; TImage Necesito un circulo centrado mas pequeno, y eso no lo hace la linea que me indicas |
Hola.
A ver, modifico un poco un ejemplo a ver si podes lograr lo que estas buscando.
Este es el resultado, todos centrados. ![]() Saludos :) Nota: Delphi 7 soporta raise Exception (raise command) |
Lo probare y te dejare saber
Muchas gracias |
| La franja horaria es GMT +2. Ahora son las 12:48:19. |
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