Foros del Web » Programando para Internet » Javascript »

Dibujar linea de punto X a un punto Y

Estas en el tema de Dibujar linea de punto X a un punto Y en el foro de Javascript en Foros del Web. Hola, he estado buscando por todos sitios y no he encontrado como poder hacerlo. Lo que intento hacer es dibujar una linea de un punto ...
  #1 (permalink)  
Antiguo 30/06/2012, 12:01
 
Fecha de Ingreso: octubre-2011
Ubicación: Barcelona
Mensajes: 115
Antigüedad: 12 años, 6 meses
Puntos: 4
Dibujar linea de punto X a un punto Y

Hola, he estado buscando por todos sitios y no he encontrado como poder hacerlo.
Lo que intento hacer es dibujar una linea de un punto a otro, por ejemplo, de un div con posicion top 200px y left 200px a otro div con posicion top 400px y left 400px.

Gracias
  #2 (permalink)  
Antiguo 30/06/2012, 12:47
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Dibujar linea de punto X a un punto Y

Con canvas podes dibujar la linea
Código HTML:
Ver original
  1. <!DOCTYPE html>
  2. <html lang="es-ar">
  3. <meta charset="utf-8" />
  4. <title>linea con canvas</title>
  5. <!--[if lt IE 9]><script type="text/javascript" src="html5ie.js"></script><![endif]-->
  6. </head>
  7. <canvas id="linea" width="200" height="100" style="background: orange;">
  8. su navegador no soporta canvas
  9. <script type="text/javascript">
  10. var l=document.getElementById("linea");
  11. var c=l.getContext("2d");
  12. c.lineTo(50,0);
  13. c.lineTo(0,50);
  14. c.stroke();
  15. </body>
  16. </html>
Pero como ves el elemento canvas actúa como un contenedor para la linea, asi que o tenes que dibujar los cuadrados/rectángulos que simulan los divs dentro del canvas, o ubicar los divs fuera del canvas en las posiciones deseadas.

Otra alternativa es usar un svg
Código svg:
Ver original
  1. <?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2. <svg
  3.    xmlns:dc="http://purl.org/dc/elements/1.1/"
  4.    xmlns:cc="http://creativecommons.org/ns#"
  5.    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  6.    xmlns:svg="http://www.w3.org/2000/svg"
  7.    xmlns="http://www.w3.org/2000/svg"
  8.    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
  9.    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
  10.    width="210mm"
  11.    height="297mm"
  12.    id="svg2"
  13.    version="1.1"
  14.    inkscape:version="0.48.2 r9819"
  15.    sodipodi:docname="Documento nuevo 1">
  16.   <defs
  17.      id="defs4" />
  18.   <sodipodi:namedview
  19.      id="base"
  20.      pagecolor="#ffffff"
  21.      bordercolor="#666666"
  22.      borderopacity="1.0"
  23.      inkscape:pageopacity="0.0"
  24.      inkscape:pageshadow="2"
  25.      inkscape:zoom="0.35"
  26.      inkscape:cx="-115.71429"
  27.      inkscape:cy="520"
  28.      inkscape:document-units="px"
  29.      inkscape:current-layer="layer1"
  30.      showgrid="false"
  31.      inkscape:window-width="1440"
  32.      inkscape:window-height="881"
  33.      inkscape:window-x="-4"
  34.      inkscape:window-y="-4"
  35.      inkscape:window-maximized="1" />
  36.   <metadata
  37.      id="metadata7">
  38.     <rdf:RDF>
  39.       <cc:Work
  40.          rdf:about="">
  41.         <dc:format>image/svg+xml</dc:format>
  42.         <dc:type
  43.            rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
  44.         <dc:title></dc:title>
  45.       </cc:Work>
  46.     </rdf:RDF>
  47.   </metadata>
  48.   <g
  49.      inkscape:label="Capa 1"
  50.      inkscape:groupmode="layer"
  51.      id="layer1">
  52.     <rect
  53.        style="fill:#ff0000;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
  54.        id="rect2985"
  55.        width="228.57143"
  56.        height="185.71428"
  57.        x="22.857143"
  58.        y="620.93359" />
  59.     <rect
  60.        style="fill:#008000"
  61.        id="rect2987"
  62.        width="220"
  63.        height="174.28572"
  64.        x="408.57144"
  65.        y="143.79076" />
  66.     <path
  67.        style="fill:none;stroke:#16162f;stroke-width:12.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
  68.        d="m 411.42857,320.93361 -160,300"
  69.        id="path2989"
  70.        inkscape:connector-curvature="0" />
  71.   </g>
  72. </svg>

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #3 (permalink)  
Antiguo 30/06/2012, 16:57
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 5 meses
Puntos: 317
Respuesta: Dibujar linea de punto X a un punto Y

Y otra más es simular la línea con un div

Código HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
</head>
<body>
<div style="position: absolute; top: 200px; left: 200px; height: 100px; width: 100px; background: green;"></div>

<div style="position: absolute; top: 400px; left: 400px; height: 100px; width: 100px; background: red;"></div>

<div style="position: absolute; top: 250px; left: 250px; height: 2px; width: 290px; 
background: black; overflow: hidden; 
-moz-transform-origin:0px 0px; 
-o-transform-origin:0px 0px; 
-webkit-transform-origin:0px 0px; 
transform-origin:0px 0px; 
-moz-transform: rotate(45deg); 
-o-transform: rotate(45deg); 
-webkit-transform: rotate(45deg); 
transform: rotate(45deg); 
filter: progid:DXImageTransform.Microsoft.Matrix(sizingMethod='auto expand', 
M11=0.7071067811865476, M12=-0.7071067811865475, M21=0.7071067811865475, 
M22=0.7071067811865476);"></div>

</body>
</html> 
  #4 (permalink)  
Antiguo 30/06/2012, 18:34
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Dibujar linea de punto X a un punto Y

Hola:

Para líneas svg solo es necesario el tag line (y el tag svg)...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 30/06/2012, 19:05
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 5 meses
Puntos: 317
Respuesta: Dibujar linea de punto X a un punto Y

Me resultó extraña esa forma de presentar un SVG. Pensé que sería alguna "librería" compatibilizadora. Esperaba que alguien más preguntara, pero ya que pasé, aprovecho y lo hago yo ahora. ¿Hay algún manual sobre eso?. Tiene etiquetas muy raras.

Y ya que menciono cosas raras.

Cita:
Iniciado por Gilad
...he estado buscando por todos sitios y no he encontrado como poder hacerlo...
¿De veras?
  #6 (permalink)  
Antiguo 30/06/2012, 19:17
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
Respuesta: Dibujar linea de punto X a un punto Y

El código parece estar generado con inkscape y por eso es medio "complejo". A mi me gustó esta página como introducción a svg: http://srufaculty.sru.edu/david.dailey/svg/#JSSMIL
Es viejita, pero con muchos ejemplos interesantes
  #7 (permalink)  
Antiguo 01/07/2012, 03:28
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Dibujar linea de punto X a un punto Y

Hola:

Y sin imágenes, se puede generar una serie de divs de un pixel de altura y anchura, con posicionamiento absoluto (dentro de uno "relativo"), usando la ecuación de laa recta para los puntos intermedios: un viejo ejemplo de un reloj analógico (me parece que estaba en las FAQs).

Sobre el formato svg, acabo de hacer este apunte: SVG: Mapa de España... parece un formato interesante para hacer mapas de imágenes (lástima que aún no se implemente bien en algunos navegadores).

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #8 (permalink)  
Antiguo 01/07/2012, 04:08
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Dibujar linea de punto X a un punto Y

Cita:
Iniciado por furoya Ver Mensaje
Me resultó extraña esa forma de presentar un SVG. Pensé que sería alguna "librería" compatibilizadora. Esperaba que alguien más preguntara, pero ya que pasé, aprovecho y lo hago yo ahora. ¿Hay algún manual sobre eso?. Tiene etiquetas muy raras.

Y ya que menciono cosas raras.



¿De veras?
Cita:
Iniciado por Panino5001 Ver Mensaje
El código parece estar generado con inkscape y por eso es medio "complejo". A mi me gustó esta página como introducción a svg: http://srufaculty.sru.edu/david.dailey/svg/#JSSMIL
Es viejita, pero con muchos ejemplos interesantes
Si, efectivamente lo hice con el Inkscape(me parece una buena herramienta entre las que he visto), tratando de interpretar/visualizar que es lo que quiere @Gilad, ya que no aclara mucho si la linea une 2 vertices de los divs, o los une por el centro como hizo @furoya.
Cabe aclarar que muchas de las etiquetas y atributos son solo para uso interno del Inkscape, (para una edición posterior basicamente), podría haberse hecho algo más simple
Código svg:
Ver original
  1. <svg width="640" height="480">
  2.  <g>
  3.   <polyline transform="rotate(5.0162, 286.5, 216.447)" se:connector="svg_2 svg_1" fill="none" stroke-width="5" stroke="#000000" points="364,154.76 286.5,216.449 209,278.138" id="svg_3"/>
  4.   <rect id="svg_1" height="119" width="119" y="266" x="90"  fill="#FF0000"/>
  5.   <rect id="svg_2" height="120" width="120" y="47" x="364"  fill="#7f3f00"/>
  6.  </g>
  7. </svg>


Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.

Última edición por emprear; 01/07/2012 a las 04:24
  #9 (permalink)  
Antiguo 04/07/2012, 08:07
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 5 meses
Puntos: 317
Respuesta: Dibujar linea de punto X a un punto Y

Ya que estamos —y porque Gilad sigue sin aclarar nada— pongo otro que nos falta : VML ( Vector Markup Language), que es para IE.

Código:
<html xmlns:v="urn:schemas-microsoft-com:vml" prefix="v" />
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<head>
<style type="text/css">
v\: * { behavior:url(#default#VML); position: absolute; top:0; left: 0;}
</style>
</head>
<body>

<div style="position: absolute; top: 200px; left: 200px; height: 100px; width: 100px; background: green;"></div>

<div style="position: absolute; top: 400px; left: 400px; height: 100px; width: 100px; background: red;"></div>

<v:line from="250 250" to="450 450" stroke="true" strokecolor="black" strokeweight="2" coordsize="1000,1000" coordorigin="0 0" />

</body>
</html>
(Al próximo que diga que "no encuentra", lo colgamos de las amígdalas.)

Etiquetas: canvas, dibujar, punto, svg
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:23.