rombo example ejemplo drawoval dibujar clase java graphic

ejemplo - graphics java example



Dibujo de lĂ­nea discontinua en java (3)

Mi problema es que quiero dibujar una línea discontinua en un panel, puedo hacerlo pero también dibuja mi borde en una línea discontinua, que es ¡oh Dios mío!

¿Puede alguien explicar por qué? Estoy usando paintComponent para dibujar y dibujar directamente al panel

Este es el código para dibujar una línea discontinua:

public void drawDashedLine(Graphics g, int x1, int y1, int x2, int y2){ Graphics2D g2d = (Graphics2D) g; //float dash[] = {10.0f}; Stroke dashed = new BasicStroke(3, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 0, new float[]{9}, 0); g2d.setStroke(dashed); g2d.drawLine(x1, y1, x2, y2); }


Estás modificando la instancia de Graphics pasa a paintComponent() , que también se usa para pintar los bordes.

En su lugar, haga una copia de la instancia de Graphics y utilícela para hacer su dibujo:

public void drawDashedLine(Graphics g, int x1, int y1, int x2, int y2){ //creates a copy of the Graphics instance Graphics2D g2d = (Graphics2D) g.create(); //set the stroke of the copy, not the original Stroke dashed = new BasicStroke(3, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 0, new float[]{9}, 0); g2d.setStroke(dashed); g2d.drawLine(x1, y1, x2, y2); //gets rid of the copy g2d.dispose(); }


Modificó el contexto de los gráficos estableciendo un trazo y los métodos subsiguientes, como paintBorder() usan el mismo contexto y, por lo tanto, heredan todas las modificaciones que realizó.

Solución: clone el contexto, utilícelo para pintar y deséchelo después.

Código:

// derive your own context Graphics2D g2d = (Graphics2D) g.create(); // use context for painting ... // when done: dispose your context g2d.dispose();


Otra posibilidad sería almacenar los valores utilizados en las variables locales de intercambio (Ej. Color, Trazo, etc.) y volver a establecerlos en los Gráficos en uso.

algo como :

Color original = g.getColor(); g.setColor( // your color //); // your drawings stuff g.setColor(original);

Esto funcionará para cualquier cambio que decidas hacer a los Gráficos.