当前位置:  技术问答>java相关

java里有没有能判断两个区域是否相交的类,类似CRgn的东西?

    来源: 互联网  发布时间:2015-05-11

    本文导语:  up | 使用Rectangle类,它有很多方法可以判断: contains(int x, int y)           Checks whether or not this Rectangle contains the point at the specified location (x, y). contains(int X, int Y, int W, int H)  ...

up

|
使用Rectangle类,它有很多方法可以判断:
contains(int x, int y)
          Checks whether or not this Rectangle contains the point at the specified location (x, y).
contains(int X, int Y, int W, int H)
          Checks whether this Rectangle entirely contains the Rectangle at the specified location (X, Y) with the specified dimensions (W, H).
contains(Point p)
          Checks whether or not this Rectangle contains the specified Point.
contains(Rectangle r)
          Checks whether or not this Rectangle entirely contains the specified Rectangle.

|
我帮你去查查

|
试一试这个:

import java.awt.*;
import java.awt.event.*;
import java.awt.geom.Area;
import java.awt.geom.Ellipse2D;
import java.awt.geom.GeneralPath;
import javax.swing.*;


/**
 * The Areas class demonstrates the CAG (Constructive Area Geometry)
 * operations: Add(union), Subtract, Intersect, and ExclusiveOR.
 */
public class Areas extends JApplet {


public void init() {
Demo demo = new Demo();
getContentPane().add(demo);
getContentPane().add("North", new DemoControls(demo));
}



/**
 * The Demo class performs the CAG operations and renders the shapes.
 */
public class Demo extends JPanel {

public String areaType = "nop";

public Demo() {
setBackground(Color.white);
}


public void drawDemo(int w, int h, Graphics2D g2) {
GeneralPath p1 = new GeneralPath();

// draws the polygon on the left side
p1.moveTo( w * .25f, 0.0f);
p1.lineTo( w * .75f, h * .5f);
p1.lineTo( w * .25f, (float) h);
p1.lineTo( 0.0f, h * .5f);
p1.closePath();

GeneralPath p2 = new GeneralPath();

// draws the polygon on the right side
p2.moveTo( w * .75f, 0.0f);
p2.lineTo( (float) w, h * .5f);
p2.lineTo( w * .75f, (float) h);
p2.lineTo( w * .25f, h * .5f);
p2.closePath();

// creates an area object with the first path
Area area = new Area(p1);
g2.setColor(Color.yellow);

/*
 * fills both paths if 'nop' is selected; otherwise, creates
 * an Area object with p2 and performs the selected CAG
 * operation with the two Area objects
 */
if (areaType.equals("nop")) {
g2.fill(p1);
g2.fill(p2);
g2.setColor(Color.red);
g2.draw(p1);
g2.draw(p2);
return;
} else if (areaType.equals("add")) {
area.add(new Area(p2));
} else if (areaType.equals("sub")) {
area.subtract(new Area(p2));
} else if (areaType.equals("xor")) {
area.exclusiveOr(new Area(p2));
} else if (areaType.equals("int")) {
area.intersect(new Area(p2));
} else if (areaType.equals("pear")) {

double sx = w/100;
double sy = h/140;
g2.scale(sx, sy);
double x = w/sx/2;
double y = h/sy/2;

/*
 * creates the first leaf by filling the intersection of
 * two Area objects created from an ellipse.
 */
Ellipse2D leaf = new Ellipse2D.Double(x-16, y-29, 15.0, 15.0);
Area leaf1 = new Area(leaf);
leaf.setFrame(x-14, y-47, 30.0, 30.0);
Area leaf2 = new Area(leaf);
leaf1.intersect(leaf2);
g2.setColor(Color.green);
g2.fill(leaf1);

// creates the second leaf.
leaf.setFrame(x+1, y-29, 15.0, 15.0);
leaf1 = new Area(leaf);
leaf2.intersect(leaf1);
g2.fill(leaf2);

/*
 * creates the stem by filling the Area resulting from the
 * subtraction of two Area objects created from an
 * ellipse.
 */
Ellipse2D stem = new Ellipse2D.Double(x, y-42, 40.0, 40.0);
Area st1 = new Area(stem);
stem.setFrame(x+3, y-47, 50.0, 50.0);
st1.subtract(new Area(stem));
g2.setColor(Color.black);
g2.fill(st1);

/*
 * creates the pear itself by filling the Area resulting
 * from the union of two Area objects created by two
 * different ellipses.
 */
Ellipse2D circle = new Ellipse2D.Double(x-25, y, 50.0, 50.0);
Ellipse2D oval = new Ellipse2D.Double(x-19, y-20, 40.0, 70.0);
Area circ = new Area(circle);
circ.add(new Area(oval));

g2.setColor(Color.yellow);
g2.fill(circ);
return;
}

g2.fill(area);
g2.setColor(Color.red);
g2.draw(area);
}


public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
Dimension d = getSize();
g2.setBackground(getBackground());
g2.clearRect(0, 0, d.width, d.height);
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
drawDemo(d.width, d.height, g2);
}
} // End Demo class

后继...

|
到java.sun.com中查查j2D的api
我记得那里有!

    
 
 

您可能感兴趣的文章:

  • shell如何做成类似java的List
  • 请问那里可以下到类似于jBuilder帮助里的java reference?(想要JAVA的帮助)
  • SecureCRT上运行一个JAVA程序,该程序类似一个在WINDOWS下一直运行的CMD窗口的东西,SecureCRT关掉后,JAVA还会继续运行吗?
  • java 在Unix下有没有类似于Windows SDK的东西
  • Java有类似的“MSDN”吗?
  • 如何用JAVA做类似服务的一类程序?
  • 怎样用java 写一个类似画板的程序
  • java有没有类似msdn的帮助文档?叫什么名称?在那里下载?
  • 请问JAVA有没有类似与MSDN的帮助资源
  • 请教java中如何实现vb中chr() ,asc() 类似的功能?
  • JAVA里有没有类似SLEEP的函数?
  • JAVA中有没有类似VB中IIF的方法
  • java 的条件判断函数(类似于别的语言iif函数)
  • 请大家推荐在日文系统下好的java编辑器(类似jcreator),谢谢!!
  • 哪位高手能提供一个类似cell的控件(在java下使用)?
  • java中如何实现类似vb中的chr()函数的功能?
  • 请问JAVA有类似MSDN这样的东西吗?
  • java的帮助在哪?类似msdn的??
  • 急!大家谁有类似visio的java实例或代码?
  • help! JAVA下有类似VC++ 下的socket 类吗?请各位高手看一下!!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java实现判断字符串是否全是数字的四种方法代码举例
  • 我是学pb的,判断闰年的是isdate("2-28"),但在java里怎么判断呢?
  • java判断日期字符是否有效(在线等待答案)
  • java判断远程服务器上的文件是否存在的方法
  • java中判断本机操作系统的类和方法
  • 如何从java字符串中判断空格在第几位
  • java中一个逻辑判断字符串 (1&&0)如何转变成boolean值?
  • Java中有什么方法判断字节中的每一个bit位是0还是1?
  • 请问java如何判断中文字和字符,有没有这样的类或方法...
  • 怎么用java script判断是用户输入的字符串内容是正确的日期格式
  • JAVA如何判断浏览器的类型,如何存取COOKIE的值,请给个源代码!!!
  • java里有判断一个点是否在一个多边形的里面的函数吗?
  • 在java中如何判断目录是否存在
  • java 里怎样判断一个字符串为空?
  • Java用三元运算符判断奇数和偶数的简单实现
  • 请问java中什么方法判断一个字符串是否能被转换成int或float?
  • 如何在JSP中的JAVA脚本中判断数据类型?
  • java判断回文数示例分享
  • Java得到一个整数的绝对值,不使用任何判断和比较语句,包括API
  • java 截取字符串(判断汉字)
  • 在Java中如何判断小鼠鼠被按下的是左键还是右键
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3