Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Java (http://www.forosdelweb.com/f45/)
-   -   Dibujar línea senoidal entre 2 puntos (http://www.forosdelweb.com/f45/dibujar-linea-senoidal-entre-2-puntos-377347/)

msi 10/03/2006 13:20

Dibujar línea senoidal entre 2 puntos
 
Hola, estoy intentando dibujar una línea senoidal que una 2 coordenadas del ratón. Se como pintar líneas rectas entre esos 2 puntos pero ahora quería hacer esa línea de forma curvada o en zigzag.

Todos los ejemplos que he visto son sin especificar coordenadas y se limitan a recorrer un for de 0 a un valor y dibujar los puntos senoidales, pero claro, mis líneas son libres (la dirección la elige el usuario).

De todas las maneras que he visto, tengo logrado que pinte algo desde la coordenada origen a la destino pero no termino de crear la curva periódica.
Os dejo el código ya que no tengo idea de los parámetros a poner:

grafico2d = (Graphics2D) grafico;
grafico2d.setStroke(new BasicStroke(3.0f));
GeneralPath p = new GeneralPath(GeneralPath.WIND_EVEN_ODD);
p.moveTo(x1,y1);
p.moveTo(x2,y2);

p.curveTo(0.0f,0.0f, x2,y2, x1, y1);
grafico2d.draw(p);
repaint();


Supongo que el "kit" de la cuestión está en los valores 0.0f pero mi ignorancia y mi inglés no dan para más.

¿Sabéis otra manera de realizar una línea curvada o en zigzag? ¿Qué tengo que modifcar en este código para lograrlo?

Un saludo.

Willie 10/03/2006 13:47

Aclaracion: nunca he hecho graficos en Java.
que es lo que pasa cuando corres el ejemplo??
lo que mi intuicion me diria es que lo de p.curveTo(...) es donde van las coordenadas.
quizas: punto de partida, punto punto maximo o minimo de la curva, punto final.
De donde sacaste el ejemplo?

msi 10/03/2006 16:06

Lo he sacado de aquí:
http://java.sun.com/products/java-me...rveQuadTo.html

Viendo el dibujo, es lo que andaba buscando pero ya digo que me da igual que sea curvada que en zigzag. Hay ejemplos de otras clases en http://java.sun.com/products/java-me...ite/index.html

Mi error radica en mi inexperiencia de gráficos con java y que todo lo que veo está en inglés.

Por aportar algo, aquí va mi código para pintar una línea recta entre 2 puntos:

private void DibujarLinea(int x1,int y1,int x2,int y2){
grafico2d = (Graphics2D) grafico;
Stroke s = new BasicStroke(3.0f, // Width
BasicStroke.CAP_SQUARE, // End cap
BasicStroke. JOIN_MITER, // Join style
10.0f); // MITER limit (10 por defecto)

grafico2d.setStroke(s);
Line2D.Float line = new Line2D.Float((float) x1,(float) y1,(float) x2,(float) y2);
grafico2d.draw(line);
repaint();

}


Estoy intentando solucionarlo usando Graphics2D pero me daría igual usar Graphics.


La zona horaria es GMT -6. Ahora son las 09:42.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.