gpt4 book ai didi

java - 使用 Java 图形进行内部裁剪

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:14:45 25 4
gpt4 key购买 nike

我需要使用 java.awt.Graphics 绘制一条线,但应该只渲染位于矩形之外的线部分。

是否可以使用图形剪裁支持,还是我需要计算交点并自己剪裁线?

最佳答案

您需要使用 Area类(class)。此示例将演示如何执行您的要求:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Area;
import java.awt.geom.Rectangle2D;

import javax.swing.JFrame;
import javax.swing.JPanel;


public class Test extends JPanel {

public static void main(String[] args) {
JFrame f = new JFrame();
Test t = new Test();
f.getContentPane().setLayout(new BorderLayout());
f.getContentPane().add(t,BorderLayout.CENTER);
f.pack();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}

public Test() {
setPreferredSize(new Dimension(300, 300));
}

public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D)g.create();
Rectangle2D rectangleNotToDrawIn = new Rectangle2D.Double(100, 100, 20, 30);
Area outside = calculateRectOutside(rectangleNotToDrawIn);
g2.setPaint(Color.white);
g2.fillRect(0, 0, getWidth(), getHeight());
g2.setPaint(Color.black);
g2.setClip(outside);
g2.drawLine(0, 0, getWidth(), getHeight());

}


private Area calculateRectOutside(Rectangle2D r) {
Area outside = new Area(new Rectangle2D.Double(0, 0, getWidth(), getHeight()));
outside.subtract(new Area(r));
return outside;
}

}

关于java - 使用 Java 图形进行内部裁剪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1241253/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com