Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Dibujar y borrar lineas con el movimiento de labels (https://www.clubdelphi.com/foros/showthread.php?t=31316)

Acanol 04-05-2006 17:19:21

Dibujar y borrar lineas con el movimiento de labels
 
Muy buenas, es mi primer post en este foro, llevo mucho tiempo leyendo vuestras soluciones y realmente me han servido de mucha utilidad, pero ahora tngo un problema al cual no le he encontrado solución por ningun sitio, he estado mirando todos los hilos y nada, (espero no haberme saltado ninguno, jeje).

Necesitaba mover unos labels y lo consegui con el codigo de los siguientes links.

http://www.q3.nu/trucomania/foros/viewtopic.php?p=1687&sid=b07d2237cbd85f93a677d8b9dbc07c85
http://www.q3.nu/trucomania/foros/viewtopic.php?p=795&sid=afae5381e83059ad90483928678cdae4


Bueno mi consulta es la siguiente:
Muevo una serie de labels en un timage el cual tiene un mapa cargado. Lo que ocurre es que pretendo dibujar una línea desde el punto de inicio del label, hasta el punto donde es arrastrado(cuando coloco los labels en el mapa almaceno en una tabla las coordenadas para asi hacer que la raya parta siempre desde el punto inicial) , me he encontrado con el problema de que al utilizar el codigo del anterior link, no puedo dibujar esta línea con el mousemove, es decir, dibujarla durante el movimiento del label, que es lo que pretendo. Otro de los problemas que me ha surgido es que al dibujar y borrar las lineas sobre el timage con el mapa, estas me van borrando el mapa. Necesito que la linea se dibuje con el movimiento del label y que al borrar esta y dibujarla hasta la nueva posición del label, no me borre el mapa. A ver si podeis hecharme una mano ya que estoy bastante agobiado y no se por donde tirar. Muchas gracias por adelantado.




[delphi]
{............etc..............}
Código Delphi [-]
 
if not dtm.Qxy.IsEmpty then 
begin 
//////////////Dibujamos una linea desde el punto de partida hasta donde soltemos el componente 
 
image1.Canvas.Pen.Mode := pmNotXor; 
image1.Canvas.MoveTo (linx,linY); 
image1.Canvas.LineTo (trunc(dtm.Qxyx.value),trunc(dtm.QxyY.value)); 
image1.canvas.Pen.Mode:= pmcopy; 
image1.Canvas.FillRect(ClientRect); 
image1.Canvas.Pen.Color:= clblue; 
image1.Canvas.MoveTo(trunc(dtm.Qxyx.value),trunc(dtm.QxyY.value)); 
finx:=left; 
finy:=top; 
image1.Canvas.LineTo(finx, finy); 
image1.Refresh;//No es necesario(o por lo menos hace lo mismo)
end 
else 
begin 
image1.Canvas.FillRect(ClientRect); 
image1.Canvas.Pen.Color:= clblue; 
image1.Canvas.MoveTo(linx, liny); 
finx:=left; 
finy:=top; 
image1.Canvas.LineTo(finx, finy); 
image1.Refresh; //No es necesario(o por lo menos hace lo mismo)
end; 
LimitaMovimiento(Control);//controlamos que no se salga de la ventana. 
end; 
finally 
 
{............etc..............}







Muchas gracias por la ayuda que me podais prestar.

Un saludo.

Neftali [Germán.Estévez] 04-05-2006 17:39:08

Uno de los problemas de dibujar líneas directamente sobre el Canvas es el que tú comentas.
Antes de que continues adelante te voy a sugerir que revises el componente SimpleGraph que puedes encontrar en DelphiArea. Yo lo he utilizadoy es muy bueno (gratuíto y con fuentes).
No es que quiera cambiarte los planes, pero está justo pensado para cosas como las que tú estás haciendo. Échale un vistazo a la demo a ver si te puede servir.

Si aun así continuas con tu código, creo que la única forma de resolver tu problema es ir redibujando el fondo (en tu caso el mapa) cada vez que borras la línea. Será lento (y seguramente te aparezca un parpadeo), pero con el código que está utilizando creo que no hay otra opción.

Tal vez la alternativa es que las líneas que dibujes sean objetos propios en sí, por ejemplo piensa en TShapes (pero que dibujen líneas).

Acanol 04-05-2006 18:12:00

Muchas gracias por responder tan pronto :). Voy a mirarlo y te comento. Espero que me sirva, porque me lleva loco. Te vuelvo a dar las gracias.

Un Saludo.

Acanol 04-05-2006 18:24:30

:eek: Madre mia le he echado un vistazo a la demo is perfecto, ahora solo tengo que mirarlo detenidamente para ver como darle utilidad en mi programa, muchisimas gracias. Si necesito ayuda para poder utilizarlo posteo a continuación de esto, ya que no estoy acostumbrado a estas cosas.

Gracias. Un saludo :D ;)

Neftali [Germán.Estévez] 05-05-2006 10:13:41

Si tienes dudas de cómo utilizarlo, postéalo aquí (lo he utilizado bastante y te podré echar una mano) o el los foros de la página del componente, ya que el autor está muy abierto a todo tipo de sugerencia, preguntas y demás...

Acanol 25-05-2006 11:50:45

me ayudas a utilizarlo?
 
Muy buena Neftali, he retomado la parte de mi proyecto en la que creo me puede servir el componente SimpleGraph, le he echado un vistazo y no tngo ni idea de como utilizarlo. Lo primero no puedo agregar el componente, o por lo menos no se como hacerlo, siempre lo he hecho dandole a Componente/Install Component... , pero lo que yo me he descargado no tiene el .dpk y entonces no se como hacer para instalarlo. Mi segunda peticion seria si me podrias explicar por msn o algo por el estilo, que es mucho mas rapido, la forma de utilizar este componente.

Como ya sabes yo lo queria para colocar por ejemplo en un mapa de españa, (con sus carreteras), un listbox que contenta el km de ese punto, y queria dar la opcion de mover ese componente por toda la imagen (esto esta solucionado, puedo mover el componente), pero al moverlo queria que se dibujase una linea desde el punto señalado en el mapa hasta el componente, y que mueva donde mueva el componente, la linea siempre este desde el punto del mapa al componente.

Espero haberme explicado bien y que me puedas echar una mano, (aunque sea al cuello), jejej, un saludo y espero noticias tuyas.



P.D: Un pequeño comentario, en tu pagina en el apartado novedades, existe unos pequeños errores en las fechas de los componentes (TselectOnRuntime y Inaugurados los Feeds..) en las fechas pone el año 2205. Enhorabuena por la pagina, me sirvio de ayuda. ;)

Acanol 25-05-2006 12:00:23

Vale lo he instalando utilizando el dpk de otro component que tenia, jeje no se si lo habre echo bien pero el componente simplegraph ya me aparece ;).

Neftali [Germán.Estévez] 29-05-2006 10:50:43

Una vez instalado, te recomiendo que hagas unas pruebas y revises la demo.
El componente no es difícil de utilizar, y en la demo están programadas la mayoría de las funcionalidades.
Comienza y si tienes algun problema concreto ya dirás...


La franja horaria es GMT +2. Ahora son las 04:41:35.

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