Java2D: Tăng độ rộng dòng


81

Tôi muốn tăng chiều rộng Line2D. Tôi không thể tìm thấy bất kỳ phương pháp nào để làm điều đó. Tôi có cần thực sự tạo một hình chữ nhật nhỏ cho mục đích này không?

Câu trả lời:


166

Bạn nên sử dụng setStrokeđể thiết lập một nét củaGraphics2D đối tượng.

Ví dụ tại http://www.java2s.com cung cấp cho bạn một số ví dụ về mã.

Đoạn mã sau tạo ra hình ảnh bên dưới:

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

nhập mô tả hình ảnh ở đây

(Lưu ý rằng setStrokephương thức không có sẵn trong Graphicsđối tượng. Bạn phải truyền nó tới một Graphics2Dđối tượng.)


Bài đăng này đã được viết lại thành một bài báo ở đây .


28
+1 cho hình minh họa! Ngoài ra, hãy xem xétg2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)
rácgod

1

Là gì Stroke:

Lớp BasicStroke định nghĩa một tập hợp các thuộc tính kết xuất cơ bản cho các đường viền của các nguyên thủy đồ hoạ, được kết xuất với một đối tượng Graphics2D có thuộc tính Stroke của nó được đặt thành BasicStroke này.

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

Lưu ý rằng Strokecài đặt:

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

đang đặt chiều rộng dòng, vì BasicStroke(float width):

Tạo một BasicStroke vững chắc với chiều rộng dòng được chỉ định và với các giá trị mặc định cho kiểu cap và nối.

Và, nó cũng ảnh hưởng đến các phương pháp khác như Graphics2D.drawLine(int x1, int y1, int x2, int y2)Graphics2D.drawRect(int x, int y, int width, int height):

Các phương thức của giao diện Graphics2D sử dụng Hình dạng phác thảo được trả về bởi một đối tượng Stroke bao gồm draw và bất kỳ phương thức nào khác được triển khai theo phương thức đó, chẳng hạn như drawLine, drawRect, drawRoundRect, drawOval, drawArc, drawPolyline và drawPolygon.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.