Java2D: Erhöhen Sie die Linienbreite

81

Ich möchte die Line2D-Breite erhöhen. Ich konnte keine Methode finden, um das zu tun. Muss ich zu diesem Zweck tatsächlich ein kleines Rechteck erstellen?

Boolescher Wert
quelle

Antworten:

165

Sie sollten verwenden setStroke, um einen Strich des Graphics2DObjekts festzulegen.

Das Beispiel unter http://www.java2s.com enthält einige Codebeispiele.

Der folgende Code erzeugt das folgende Bild:

import java.awt.*;
import java.awt.geom.Line2D;
import javax.swing.*;

public class FrameTest {
    public static void main(String[] args) {
        JFrame jf = new JFrame("Demo");
        Container cp = jf.getContentPane();
        cp.add(new JComponent() {
            public void paintComponent(Graphics g) {
                Graphics2D g2 = (Graphics2D) g;
                g2.setStroke(new BasicStroke(10));
                g2.draw(new Line2D.Float(30, 20, 80, 90));
            }
        });
        jf.setSize(300, 200);
        jf.setVisible(true);
    }
}

Geben Sie hier die Bildbeschreibung ein

(Beachten Sie, dass die setStrokeMethode im GraphicsObjekt nicht verfügbar ist . Sie müssen sie in ein Graphics2DObjekt umwandeln.)


Dieser Beitrag wurde bereits als ein Artikel neu geschrieben hier .

aioobe
quelle
28
+1 für die Illustration! Bedenken Sie auchg2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)
trashgod
1

Was ist Stroke:

Die BasicStroke-Klasse definiert einen grundlegenden Satz von Rendering-Attributen für die Umrisse von Grafikprimitiven, die mit einem Graphics2D-Objekt gerendert werden, dessen Stroke-Attribut auf diesen BasicStroke festgelegt ist.

https://docs.oracle.com/javase/7/docs/api/java/awt/BasicStroke.html

Beachten Sie, dass die StrokeEinstellung:

Graphics2D g2 = (Graphics2D) g;
g2.setStroke(new BasicStroke(10));

stellt die Linienbreite ein, da BasicStroke(float width):

Erstellt einen festen BasicStroke mit der angegebenen Linienbreite und mit Standardwerten für die Cap- und Join-Stile.

Und es beeinflusst auch andere Methoden wie Graphics2D.drawLine(int x1, int y1, int x2, int y2)und Graphics2D.drawRect(int x, int y, int width, int height):

Zu den Methoden der Graphics2D-Schnittstelle, die die von einem Strichobjekt zurückgegebene Gliederungsform verwenden, gehören draw und alle anderen Methoden, die im Hinblick auf diese Methode implementiert werden, z. B. drawLine, drawRect, drawRoundRect, drawOval, drawArc, drawPolyline und drawPolygon.

ZhaoGang
quelle