Java2D: aumenta el ancho de línea

81

Quiero aumentar el ancho de Line2D. No pude encontrar ningún método para hacer eso. ¿Necesito hacer un pequeño rectángulo para este propósito?

Booleano
fuente

Respuestas:

166

Debe utilizar setStrokepara establecer un trazo del Graphics2Dobjeto.

El ejemplo en http://www.java2s.com le ofrece algunos ejemplos de código.

El siguiente código produce la siguiente imagen:

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

ingrese la descripción de la imagen aquí

(Tenga en cuenta que el setStrokemétodo no está disponible en el Graphicsobjeto. Debe convertirlo en un Graphics2Dobjeto).


Esta publicación ha sido reescrita como un artículo aquí .

aioobe
fuente
28
+1 para la ilustración! Además, considereg2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)
trashgod
1

Que es Stroke:

La clase BasicStroke define un conjunto básico de atributos de representación para los contornos de las primitivas de gráficos, que se representan con un objeto Graphics2D que tiene su atributo Stroke establecido en este BasicStroke.

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

Tenga en cuenta que la Strokeconfiguración:

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

está configurando el ancho de línea, ya que BasicStroke(float width):

Construye un BasicStroke sólido con el ancho de línea especificado y con valores predeterminados para los estilos de límite y unión.

Y también afecta a otros métodos como Graphics2D.drawLine(int x1, int y1, int x2, int y2)y Graphics2D.drawRect(int x, int y, int width, int height):

Los métodos de la interfaz Graphics2D que usan el contorno Shape devuelto por un objeto Stroke incluyen draw y cualquier otro método que se implemente en términos de ese método, como drawLine, drawRect, drawRoundRect, drawOval, drawArc, drawPolyline y drawPolygon.

ZhaoGang
fuente