Was genau ist der basicstroke (2dGraphics)?

uuqfowehui23

Aktives Mitglied
Also allgemein, was genau soll der Stroke sein?

1643833615541.png
Das konnte ich bei einem Artikel über den Stroke sehen, aber was soll das darstellen o_O?
Ich dachte immer, dass der Stroke nur die Strichstärke sei.
 

mihe7

Top Contributor
Hier mal ein Beispiel, das den Effekt am "lebenden Objekt" zeigt:
Java:
import java.awt.*;
import java.awt.geom.*;
import static java.awt.BasicStroke.*;
import static java.awt.RenderingHints.*;
import javax.swing.*;

public class Test {

    public void run() {
        JPanel panel = new JPanel() {
            Shape triangle = new Polygon(new int[]{-1,1,0}, new int[]{-1,-1,1}, 3);
            
            public void paintComponent(Graphics g) {
                Graphics2D g2 = (Graphics2D) g;
                g2.setRenderingHint(KEY_ANTIALIASING, VALUE_ANTIALIAS_ON);

                g2.scale(getWidth()/6, getHeight()/6);
                g2.translate(1,1);
                for (int join : new int[]{JOIN_BEVEL, JOIN_MITER, JOIN_ROUND}) {
                    g2.setStroke(new BasicStroke(0.1f, CAP_SQUARE, join));
                    g2.draw(triangle);
                    g2.translate(2,0);
                }
            }
                
        };

        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.add(panel);
        frame.setSize(800, 600);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> new Test().run());
    }
}
 

uuqfowehui23

Aktives Mitglied
Hier mal ein Beispiel, das den Effekt am "lebenden Objekt" zeigt:
Java:
import java.awt.*;
import java.awt.geom.*;
import static java.awt.BasicStroke.*;
import static java.awt.RenderingHints.*;
import javax.swing.*;

public class Test {

    public void run() {
        JPanel panel = new JPanel() {
            Shape triangle = new Polygon(new int[]{-1,1,0}, new int[]{-1,-1,1}, 3);
           
            public void paintComponent(Graphics g) {
                Graphics2D g2 = (Graphics2D) g;
                g2.setRenderingHint(KEY_ANTIALIASING, VALUE_ANTIALIAS_ON);

                g2.scale(getWidth()/6, getHeight()/6);
                g2.translate(1,1);
                for (int join : new int[]{JOIN_BEVEL, JOIN_MITER, JOIN_ROUND}) {
                    g2.setStroke(new BasicStroke(0.1f, CAP_SQUARE, join));
                    g2.draw(triangle);
                    g2.translate(2,0);
                }
            }
               
        };

        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.add(panel);
        frame.setSize(800, 600);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> new Test().run());
    }
}
Vielen Dank!
 

Neumi5694

Top Contributor
Der Stroke selbst ist natürlich mehr als nur diese eine Einstellung, beinhaltet z.B. auch die Linienstärke und ob das Ganze durchgehend ist oder strichliert oder einem anderen Muster folgend. Die API erklärt das ganz gut.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
U Was genau ist skalieren bei 2dGraphics? AWT, Swing, JavaFX & SWT 4
U Was genau bewirkt Rectangle in 2dGraphics? AWT, Swing, JavaFX & SWT 1
U Was genau ist das Objekt einer affinentransformation? AWT, Swing, JavaFX & SWT 1
U Was genau ist ein Shape-Objekt? AWT, Swing, JavaFX & SWT 3
U Wie genau funktioniert 2dgraphics, in diesem Bezug? AWT, Swing, JavaFX & SWT 4
K Warum genau hat man einen Listener, dann ein Event und was ist ein Adapter AWT, Swing, JavaFX & SWT 2
A Fenster genau unterhalb von JTextField anzeigen AWT, Swing, JavaFX & SWT 1
M Swing eigene Dialoge, aber wie genau? AWT, Swing, JavaFX & SWT 5
H Float in jTable auf genau 2 Nachkommastellen AWT, Swing, JavaFX & SWT 3
I Wann genau startet der AWT-Thread? AWT, Swing, JavaFX & SWT 3
J JTextPane mit genau 80 Zeichen breite definieren? AWT, Swing, JavaFX & SWT 3
F Was GENAU ist RCP? AWT, Swing, JavaFX & SWT 13
L JProgressbar möglichst genau AWT, Swing, JavaFX & SWT 3
C Was genau macht getValueIsAdjusting() ? AWT, Swing, JavaFX & SWT 4
I ToolTipText genau positionieren AWT, Swing, JavaFX & SWT 2
3 2D-Grafik BasicStroke dash pattern - Linie zu lang!? AWT, Swing, JavaFX & SWT 1
B Swing BasicStroke - Miterlimit u.ä. AWT, Swing, JavaFX & SWT 3
G Fehler bei BasicStroke Objekt AWT, Swing, JavaFX & SWT 2
U Code doch nicht austauschbar in 2DGraphics AWT, Swing, JavaFX & SWT 2
U Warum wird zweimal die Affinetransformation estellt (2Dgraphics, Java)? AWT, Swing, JavaFX & SWT 31
U Wie funktioniert das rotieren unter 2dGraphics, also wie stelle ich z. B. 90° ein? AWT, Swing, JavaFX & SWT 1
U was bewirkt die methode fill und unterschied zu anderen fill Methoden in 2dgraphics? (Java)? AWT, Swing, JavaFX & SWT 6
U 2dgraphics unterschied zwischen .scale und AffineTransform.getScaleInstance AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen


Oben