gestrichelte Linien bzw. Pfeile

Status
Nicht offen für weitere Antworten.

André Uhres

Top Contributor
Code:
/* Um eine gestrichelte Linie zu zeichnen, musst du den 
 * kompliziertesten Konstruktor von BasicStroke() 
 * benutzen und Werte für alle Attribute angeben. Zum Beispiel:
 */
            Stroke s = new BasicStroke(
                    4.0f,                      // Width
                    BasicStroke.CAP_SQUARE,    // End cap
                    BasicStroke.JOIN_MITER,    // Join style
                    10.0f,                     // Miter limit
                    new float[] {16.0f,20.0f}, // Dash pattern
                    0.0f);                     // Dash phase
                    g2d.setStroke(s);
                    g2d.drawLine(0,0,100,100);
PS: Um ein Punkt-Strich Muster zu zeichnen kannst du z.B. diesen Array benutzen:
new float[] { 21.0f, 9.0f, 3.0f, 9.0f }, // Dot-Dash pattern
 

André Uhres

Top Contributor
Code:
/*********************************************************************/ 
/*  Author   : Erik Krebs                                            */ 
/*  Datum    : 30.09.98                                              */ 
/*  Datei    : Pfeil.java                                            */ 
/*********************************************************************/ 
import java.awt.*; 
import javax.swing.*; 
class Pfeil { 
    private Math m; 
    private Point von, nach; // die zwei Punkte, die die Pfeil-Linie darstellen 
    private double phi;      // Rotationswinkel 
    private Polygon pfeil; 
    private double s;      // Seitenlaenge des Pfeils 
    private double xAlt, yAlt;          // x-,y-Werte vor der Rotation,relativ zur Pfeilspitze 
    private double xNeu, yNeu;          // x-,y-Werte nach der Rotation,absolut 
    private double xSpitze, ySpitze;    // x-,y-Werte der Pfeilspitze 
    public Pfeil(Point k1, Point k2, double length) { 
        von = k1; 
        nach = k2; 
        s = length;
        phi = m.atan( ((double)nach.y  -  (double)von.y ) / ((double)nach.x  -  (double)von.x ) ); 
        if(nach.x < von.x ) 
            phi = phi + m.PI; 
        // den Pfeil zeichnen 
        pfeil = new Polygon(); 
        pfeil.addPoint(nach.x , nach.y );  // Pfeilspitze 
        // Die beiden anderen Punkte des Pfeils muessen um den Winkel phi relative zur 
        // Pfeilspitze rotiert werden. 
        // x_rot = x*cos(phi) - y*sin(phi) 
        // y_rot = x*sin(phi) + y*cos(phi) 
        xSpitze = (double)nach.x; 
        ySpitze = (double)nach.y; 
        // erster Punkt 
        xAlt = (double)nach.x - s - xSpitze; 
        yAlt = (double)nach.y + s/2.5 - ySpitze; 
        xNeu = xAlt * m.cos(phi) - yAlt * m.sin(phi) + xSpitze; 
        yNeu = xAlt * m.sin(phi) + yAlt * m.cos(phi) + ySpitze; 
        pfeil.addPoint((int)xNeu, (int)yNeu); 
        // zweiter Punkt 
        yAlt = (double)nach.y - s/2.5 - ySpitze; 
        xNeu = xAlt * m.cos(phi) - yAlt * m.sin(phi) + xSpitze; 
        yNeu = xAlt * m.sin(phi) + yAlt * m.cos(phi) + ySpitze; 
        pfeil.addPoint((int)xNeu, (int)yNeu); 
        
    } 
    public void zeichnen(Graphics2D g) { 
        g.drawLine(von.x, von.y, nach.x , nach.y ); 
        g.fillPolygon(pfeil); 
    } 
    public static void main(String args[]) { 
        JFrame f = new JFrame("Pfeil Demo"); 
        final Pfeil pf1 = new Pfeil(new Point(150,50), new Point(250,100), 10.0d); 
        final Pfeil pf2 = new Pfeil(new Point(250,100), new Point(150,250), 10.0d); 
        final Pfeil pf3 = new Pfeil(new Point(150,250), new Point(50,200), 10.0d); 
        final Pfeil pf4 = new Pfeil(new Point(50,200), new Point(150,50), 10.0d); 
        final Stroke s = new BasicStroke(1.0f,   // Width 
                BasicStroke.CAP_SQUARE,    // End cap 
                BasicStroke.JOIN_MITER,    // Join style 
                10.0f,                     // Miter limit 
                new float[] {16.0f,10.0f}, // Dash pattern 
                0.0f);                     // Dash phase 
                
                JPanel p = new JPanel(){ 
                    public void paintComponent(Graphics g){ 
                        Graphics2D g2d = (Graphics2D)g; 
                        
                        g2d.setStroke(s); 
                        g2d.setColor(Color.blue); 
                        pf1.zeichnen(g2d); 
                        pf2.zeichnen(g2d); 
                        pf3.zeichnen(g2d); 
                        pf4.zeichnen(g2d); 
                    } 
                }; 
                f.getContentPane().add(p); 
                f.setSize(350, 350); 
                f.setLocationRelativeTo(null); 
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
                f.setVisible(true); 
    } 
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Mehrere Linien zeichnen AWT, Swing, JavaFX & SWT 8
T Tic Tac Toe - GUI Linien zeichnen AWT, Swing, JavaFX & SWT 14
S Parallele Linien zeichnen AWT, Swing, JavaFX & SWT 5
J Linien auf JPanel zeichnen AWT, Swing, JavaFX & SWT 3
llabusch Linien in JPanel zeichnen AWT, Swing, JavaFX & SWT 6
V JFreechart: In Linechart Linien einzeichnen und Bereiche färben AWT, Swing, JavaFX & SWT 4
S 2D-Grafik MouseDragged Linien zeichnen AWT, Swing, JavaFX & SWT 4
M Zeichnen ohne vorherige Linien zu löschen AWT, Swing, JavaFX & SWT 2
I ContentPane lösche linien AWT, Swing, JavaFX & SWT 1
1 Buttons in Kombination mit Linien AWT, Swing, JavaFX & SWT 3
A 2D-Grafik Dickere Linien AWT, Swing, JavaFX & SWT 4
C Linien über GridLayout zeichnen AWT, Swing, JavaFX & SWT 3
D JCombobox mit Linien Styles AWT, Swing, JavaFX & SWT 4
M 2D-Grafik Mehrere Linien (nacheinander) übereinander Zeichnen AWT, Swing, JavaFX & SWT 6
P SWT Linien / Pfeile zeichnen in SWT? AWT, Swing, JavaFX & SWT 3
O Sättigung bei Linien AWT, Swing, JavaFX & SWT 2
P Swing Skalieren mit DrawImage macht Linien kaputt AWT, Swing, JavaFX & SWT 6
J 2D-Grafik Fehler beim Überzeichnen von Linien AWT, Swing, JavaFX & SWT 11
K Swing JTable - vertikale Gitter-Linien AWT, Swing, JavaFX & SWT 2
1 Eigene Component in JScrollBar + fixe Linien??? AWT, Swing, JavaFX & SWT 2
C AWT: Pixel für Pixel Linien auf Panel zeichnen AWT, Swing, JavaFX & SWT 2
U SWT Linien verschwinden nach Verschieben AWT, Swing, JavaFX & SWT 3
P [gelöst] Verschiebbare Komponenten mit Linien verbinden AWT, Swing, JavaFX & SWT 2
S [Swing] Wie zeichne ich neue Linien AWT, Swing, JavaFX & SWT 3
P Problem beim Linien ziehen! AWT, Swing, JavaFX & SWT 12
Bierhumpen Linien anklicken? AWT, Swing, JavaFX & SWT 9
X Dynamische linien (Position und Länge) AWT, Swing, JavaFX & SWT 4
B Urspungskoordinaten von Linien ändern AWT, Swing, JavaFX & SWT 3
M Farbige Linien zeichnen AWT, Swing, JavaFX & SWT 3
T Linien zeichnen und wieder löschen AWT, Swing, JavaFX & SWT 9
Z Und schon wieder die Linien (Problem beim überzeichnen) AWT, Swing, JavaFX & SWT 4
G Linien Diagram in SWT AWT, Swing, JavaFX & SWT 4
S JTable - Breite der Linien AWT, Swing, JavaFX & SWT 8
F Zeichen von Linien, Rechtecken, zb wie in paint AWT, Swing, JavaFX & SWT 2
M Linien zeichnen und anklicken AWT, Swing, JavaFX & SWT 2
B JTree + Linien im Windows L&F AWT, Swing, JavaFX & SWT 9
G Linien in ein Koordinatensystem zeichen AWT, Swing, JavaFX & SWT 7
W Swing JScrollpane Scroller/Pfeile anpassen AWT, Swing, JavaFX & SWT 7
D Wie komme ich an die Pfeile ran? AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen


Oben