PDA

Ver la Versión Completa : Dibujar circulos y arrastrarlos


mosorio
14-08-2005, 13:57:24
Hola, tiempos sin escribir.

Después de tanto tiempo de desaparición debido a la utilización de otros lenguajes por culpa del mercado, he tenido la oportunidad de retomar el Delphi, y esta vez quiero hacer unas consultas.
Necesito dibujar en un área varios circulos, en los cuales cada uno colocarle un codigo o un numero, pero ademas de eso, poderlos seleccionar con el raton y poderlos arrastrar.
He estado mirando documentación del canvas, etc y he dibujado varios circulos, pero cuando quiero cambiar las coordenadas, o sale uno encima del otro o dibuja una elipse.
Además de esto, quiero enlazar los circulos con lineas y flechas para poder crear un grafico que necesito.
He visto unos componentes que lo hacen y son gratuitos, pero este componente tiene varias formas y sólo quiero el circulo y las lineas.
Se que alguno dirá y ¿por qué no lo tomas si es gratuito?, sencillamente porque pienzo tomar ese mismo codigo del dibujo del circulo para implementar un componente que me haga el circulo y en el encapsular otras funcionalidades que necesito para el módilo que estoy haciendo, por tal motivo si tomo ese componente, adicionaré más codigo y se que me voy a liar después.
Sólo pido por favor que me orienten en cómo debo dibujar el circulo, las lineas con flechas enlazarlas y crear el área de dibujo o donde se puedan visualizar.

Muchas gracias por adelantada.
PD: Utilizo D6. por cierto no he dejado de leer el foro, pero no he tenido tiempo para contestar a las consultas de otros compañeros.

Saludos :)

dec
14-08-2005, 19:02:03
Hola,

No puedo darte una respuesta, pero, se me ocurren algunas cosas luego de leer tu mensaje. Espero que no te importe que las refiera: lo haré por ver si pueden servir de algo.

Supongo que cuando hablas de que existe un componente para hacer más o menos lo que precisas te refieres al componente "TSimpleGraph (http://www.clubdelphi.com/foros/showthread.php?t=23093)" publicado en DelphiArea (http://delphiarea.com/). Lo supongo porque se ha tratado en estos Foros sobre este componente.

Si es así el mencionado componente no es que sea gratuito, es que además es libre, esto es, de código abierto, como se dice. Entonces, ¿porqué no partes de cómo se hace allí lo que tú precisas hacer?

Por otro lado, probablemente no tengas que utilizar el componente al completo: tal vez podrías heredar de alguna clase base del mismo, si ya no te interesa utilizar toda su potencia, o quieres añadir algo por tu cuenta.

Ya ves. No se me ocurre otra cosa. Lo siento. Si he dicho lo que he dicho es porque, verdaderamente, el componente "TSimpleGraph (http://delphiarea.com/products/simplegraph/)" hace algo tan parecido a lo que pretendes que me parece una buena fuente para averiguar cómo consigue hacer lo que hace.

Probablemente alguien ofrecerá otro punto de vista o información de cómo solucionar algunas o todas las cuestiones que planteas: bienvenido sea.

Neftali [Germán.Estévez]
16-08-2005, 09:58:20
Lo que yo puedo añadir...

(1) He utilizado el componente del que habla dec y lo he modificado (incluso he mantenido un par de conversaciones con el autor por temas de bug y sugerencias) y lo encuentro muy recomendable; Ya que implementa muchas funcionalidades típicas de un editor de éste tipo y además es fácilmente ampliable; En mi caso derivé algunos de los objetos existentes para añadirles propiedades y creé algunos nuevos.

(2) De todas formas, si deseas no utilizarlo, yo optaría por utilizar objetos, en lugar de ir directamente al Canvas. Una buena opción (básica y sencilla) es utilizar TShape. Te adjunto un pequeño ejemplo que en su día posteé para mover imágenes (en su día debían ser mesas de un restaurate), pero que con unas pequeñas modificaciones funciona perfectamente con TShapes y te puede servir para hacer circulos y líneas.

De todas formas, ten en cuenta las operaciones que vas a necesitar posteriormente; Por ejemplo, si luego vas a necesitar que se puedan seleccionar los elementos, dibujarles los típicos puntos de selección que aparecen en diseño, poder cambiarles el tamaño, poder guardar y recuperar de disco, poder imprimir, poder añadirles etiquetas, cambiarles color y tipo de línea, hacer Zoom,... Todas esas operaciones son las que te brinda el componente comentado.

mosorio
16-08-2005, 11:43:14
Hola,
Les doy muchas gracias por las respuesta, de hecho es lo que he pensado y puesto manos a la obra, ayer mismo, hice un pequeño componente basado en el TShape, claro que he tomado el código donde dibuja el circulo solamente ya que es el único tipo de gráfico que necesito, con respecto al componente que mencionan, si es el mismo, pero lo que estoy haciendo es un aplicativo de la empresa que será vendido a un cliente y para evitar los temas de LOPD, prefiero realizarlo y hacer las preguntitas pertinentes del caso, se que puedo basarme en el código para algunas cosas que necesito y de hecho creo que lo haré.
Pero hasta donde llegan los temas de licenciamiento por utilizar parte de este código o basarme en él.

Gracias nuevamente