Problem mit Graphics2D

jorgeHX

Erfahrenes Mitglied
Hallo Leute,
kann mir jemand sagen, warum ich in folgendem Beispiel nicht eine gestrichelte Linie neben einer durchgezogenen Linie malen kann und wie man das Probelm beheben könnte?

Wäre super:

Code:
private void drawLine(Graphics2D g, int endx, int endy) {
        Line2D.Float line = new Line2D.Float((float)st.x,
                                    (float)st.y,
                                    (float)endx,
                                    (float)endy);
       Line2D.Float lineDot = new Line2D.Float((float)st.x,
                                    (float)st.y-4,
                                    (float)endx,
                                    (float)endy-4);
        GeneralPath path = new GeneralPath(line);
        GeneralPath pathDot = new GeneralPath(lineDot);
        g.draw(path);
        BasicStroke stroke = new BasicStroke(1.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 1.0f, new float[] {5.0f}, 0.0f);
        g.setStroke(stroke);
        g.draw(pathDot);
    }

Es werden immer zwei gestrichelte Linien gezeichnet, da der Strokebefehl wohl auf beide zutrifft, obwohl ich ihn erst nach dem ersten aufrufe.

Danke für die Hilfe,
JP
 
Hi !

Also, das umwandeln in einen GeneralPath verstehe ich nicht, würde ich weglassen.
Hast du schonmal versucht,

Java:
g.setStroke(new BasicStroke(1.0f));

vor dem Zeichnen auszuführen ? Was passiert dann ?

So wie ich das verstanden hab, willst du Linien immer so darstellen, daß eine nicht-gestrichelte und eine gestrichelte Linie gezeichnet wird. Sowas geht eigentlich besser, in dem du dir eine Klasse-erzeugst, welche das Interface Stroke implementiert. Dann kannst du immer dann, wennn du deine Linie so dastellen willst auf dein "g" setzen.


Wenn du ein Beispiel willst, sag Bescheid, habe dazu gerade leider keine Zeit.

Krösi
 
Zurück