Java2D: Zwiększ szerokość linii

81

Chcę zwiększyć szerokość Line2D. Nie mogłem znaleźć żadnej metody, aby to zrobić. Czy faktycznie muszę w tym celu zrobić mały prostokąt?

Boolean
źródło

Odpowiedzi:

166

Należy użyć, setStrokeaby ustawić obrys Graphics2Dobiektu.

Przykład pod adresem http://www.java2s.com zawiera kilka przykładów kodu.

Poniższy kod tworzy poniższy obraz:

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);
    }
}

wprowadź opis obrazu tutaj

(Zwróć uwagę, że setStrokemetoda nie jest dostępna w Graphicsobiekcie. Musisz ją rzutować na Graphics2Dobiekt).


Ten post został przepisany jako artykuł tutaj .

aioobe
źródło
28
+1 za ilustrację! g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)
Weź
2

Co to jest Stroke:

Klasa BasicStroke definiuje podstawowy zestaw atrybutów renderowania dla konturów podstawowych elementów graficznych, które są renderowane za pomocą obiektu Graphics2D, którego atrybut Stroke jest ustawiony na ten BasicStroke.

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

Zwróć uwagę, że Strokeustawienie:

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

ustawia szerokość linii, ponieważ BasicStroke(float width):

Konstruuje ciągły BasicStroke z określoną szerokością linii i domyślnymi wartościami stylów zakończenia i łączenia.

Ma to również wpływ na inne metody, takie jak Graphics2D.drawLine(int x1, int y1, int x2, int y2)i Graphics2D.drawRect(int x, int y, int width, int height):

Metody interfejsu Graphics2D, które używają konturu Shape zwróconego przez obiekt Stroke, obejmują draw i wszelkie inne metody zaimplementowane w zakresie tej metody, takie jak drawLine, drawRect, drawRoundRect, drawOval, drawArc, drawPolyline i drawPolygon.

ZhaoGang
źródło