当前位置: 首页 > 面试题库 >

使用Java Graphics进行内部剪辑

芮明知
2023-03-14
问题内容

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

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


问题答案:

您需要使用Area类。本示例将演示如何执行您的要求:

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

}


 类似资料:
  • 问题内容: 我试图在一个列上内部联接两个表。从数据库方面来看,没有映射,因为这是我不想讨论的。 我想使用INNER JOIN执行HQL查询并检索ROLE对象/结果。 到目前为止,这是我的总部 session.createQuery(“ ROLE作为角色,INNER JOIN INVOLVEMENT作为参与角色,id。X =参与.roleid WHERE参与.id = X”)。list(); 我看到

  • 我不明白为什么表条目的标志被原样使用。例如,考虑具有α-β修剪和转置表的Negamax的伪代码,并集中于TT部分。 没关系。如果条目包含确切值的下限,我们尝试从左侧缩小窗口,依此类推。 而这部分我不明白。如果值太小,为什么我们设置上限标志?值位于搜索窗口的左侧 - 它小于已知的下限 - alpha。所以看起来值应该是一个下限。 从我的测试和每个人都使用那个版本的事实来看,我肯定是错的。但我不明白为

  • 问题内容: 有人可以验证内部连接对PL SQL中的UPDATE语句是否有效吗?例如 问题答案: 该synthax在Oracle SQL中不起作用。 在Oracle中,如果表是“键保留”的,则可以更新联接,即: 假设这是的主键,则此连接是可更新的,因为对于A的每一行,B 最多 只有一行,因此该更新是确定性的。 在您的情况下,由于更新后的值不依赖于另一个表,因此您可以使用具有EXIST条件的简单更新,

  • 如何在临时文件中获取名称以便在此查询中设置? 谢谢。

  • 问题内容: 我想用HQL做这样的事情: 但这给出了一个错误: 有什么办法可以使用HQL和Hibernate做到这一点? 问题答案: 尝试使用 本机SQL 解决方案方法: 需要首先导入以下内容: 然后在代码中的某处: 有关此链接的更多信息,请点击 此处(加入Hibernate查询语言)

  • 问题内容: 我们将非常感谢有关如何通过以下堆栈使用Elastic Beanstalk正确部署的资源的一些建议: MongoDB Rails(Puma) Sidekiq / Redis Elasticsearch 我需要在ebextension文件中设置所有这些东西吗?还是在AWS中手动设置内容,然后将它们正确地路由到某个地方? 问题答案: 您绝对不希望在Elastic Beanstalk服务器上运