Ver Mensaje Individual
  #1  
Antiguo 04-05-2006
Acanol Acanol is offline
Miembro
 
Registrado: abr 2006
Ubicación: Elche
Posts: 75
Reputación: 19
Acanol Va por buen camino
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.

Última edición por Acanol fecha: 04-05-2006 a las 17:23:24. Razón: Resaltado de codigo
Responder Con Cita