<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2F2D_Graphics%2FArea</id>
		<title>Java Tutorial/2D Graphics/Area - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2F2D_Graphics%2FArea"/>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/2D_Graphics/Area&amp;action=history"/>
		<updated>2026-04-10T14:47:47Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://jexp.ru/index.php?title=Java_Tutorial/2D_Graphics/Area&amp;diff=3530&amp;oldid=prev</id>
		<title> в 17:44, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/2D_Graphics/Area&amp;diff=3530&amp;oldid=prev"/>
				<updated>2010-05-31T17:44:26Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 17:44, 31 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://jexp.ru/index.php?title=Java_Tutorial/2D_Graphics/Area&amp;diff=3531&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/2D_Graphics/Area&amp;diff=3531&amp;oldid=prev"/>
				<updated>2010-05-31T15:25:30Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==  Area.add ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.awt.BasicStroke;&lt;br /&gt;
import java.awt.Canvas;&lt;br /&gt;
import java.awt.Color;&lt;br /&gt;
import java.awt.Dimension;&lt;br /&gt;
import java.awt.Graphics;&lt;br /&gt;
import java.awt.Graphics2D;&lt;br /&gt;
import java.awt.geom.Area;&lt;br /&gt;
import java.awt.geom.Ellipse2D;&lt;br /&gt;
import java.awt.geom.GeneralPath;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
public class AreaAdding extends JPanel {&lt;br /&gt;
  DrawingCanvas canvas= new DrawingCanvas();&lt;br /&gt;
  public AreaAdding() {&lt;br /&gt;
    add(canvas);&lt;br /&gt;
    canvas.area1 = new Area(canvas.gp);&lt;br /&gt;
    canvas.area1.add(canvas.area2);&lt;br /&gt;
    canvas.repaint();&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String arg[]) {&lt;br /&gt;
    JFrame frame = new JFrame();&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    frame.getContentPane().add(&amp;quot;Center&amp;quot;, new AreaAdding());&lt;br /&gt;
    frame.pack();&lt;br /&gt;
    frame.setSize(new Dimension(400, 300));&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
  class DrawingCanvas extends Canvas {&lt;br /&gt;
    GeneralPath gp;&lt;br /&gt;
    Ellipse2D ellipse;&lt;br /&gt;
    Area area1, area2;&lt;br /&gt;
    public DrawingCanvas() {&lt;br /&gt;
      setBackground(Color.white);&lt;br /&gt;
      setSize(350, 250);&lt;br /&gt;
      int w = getWidth();&lt;br /&gt;
      int h = getHeight();&lt;br /&gt;
      gp = new GeneralPath();&lt;br /&gt;
      gp.moveTo(w / 8, h / 2);&lt;br /&gt;
      gp.lineTo(w / 2, h / 4);&lt;br /&gt;
      gp.lineTo(7 * w / 8, h / 2);&lt;br /&gt;
      gp.lineTo(w / 2, 3 * h / 4);&lt;br /&gt;
      gp.closePath();&lt;br /&gt;
      area1 = new Area(gp); &lt;br /&gt;
      ellipse = new Ellipse2D.Double(w / 4, h / 4, w / 2, h / 2);&lt;br /&gt;
      area2 = new Area(ellipse); &lt;br /&gt;
    }&lt;br /&gt;
    public void paint(Graphics g) {&lt;br /&gt;
      Graphics2D g2D = (Graphics2D) g;&lt;br /&gt;
      g2D.setStroke(new BasicStroke(2.0f));&lt;br /&gt;
      g2D.draw(area1);&lt;br /&gt;
      g2D.draw(area2);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Area.exclusiveOr ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.awt.BasicStroke;&lt;br /&gt;
import java.awt.Canvas;&lt;br /&gt;
import java.awt.Color;&lt;br /&gt;
import java.awt.Dimension;&lt;br /&gt;
import java.awt.Graphics;&lt;br /&gt;
import java.awt.Graphics2D;&lt;br /&gt;
import java.awt.geom.Area;&lt;br /&gt;
import java.awt.geom.Ellipse2D;&lt;br /&gt;
import java.awt.geom.GeneralPath;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
public class AreaExclusiveOr extends JPanel {&lt;br /&gt;
  DrawingCanvas canvas;&lt;br /&gt;
  public AreaExclusiveOr() {&lt;br /&gt;
    canvas = new DrawingCanvas();&lt;br /&gt;
    add(canvas);&lt;br /&gt;
    &lt;br /&gt;
    canvas.area1 = new Area(canvas.gp);&lt;br /&gt;
    canvas.area1.exclusiveOr(canvas.area2);&lt;br /&gt;
    canvas.repaint();&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String arg[]) {&lt;br /&gt;
    JFrame frame = new JFrame();&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    frame.getContentPane().add(&amp;quot;Center&amp;quot;, new AreaExclusiveOr());&lt;br /&gt;
    frame.pack();&lt;br /&gt;
    frame.setSize(new Dimension(400, 300));&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
  class DrawingCanvas extends Canvas {&lt;br /&gt;
    GeneralPath gp;&lt;br /&gt;
    Ellipse2D ellipse;&lt;br /&gt;
    Area area1, area2;&lt;br /&gt;
    public DrawingCanvas() {&lt;br /&gt;
      setBackground(Color.white);&lt;br /&gt;
      setSize(350, 250); // width and height of canvas&lt;br /&gt;
      int w = getWidth();&lt;br /&gt;
      int h = getHeight();&lt;br /&gt;
      gp = new GeneralPath();&lt;br /&gt;
      gp.moveTo(w / 8, h / 2);&lt;br /&gt;
      gp.lineTo(w / 2, h / 4);&lt;br /&gt;
      gp.lineTo(7 * w / 8, h / 2);&lt;br /&gt;
      gp.lineTo(w / 2, 3 * h / 4);&lt;br /&gt;
      gp.closePath();&lt;br /&gt;
      area1 = new Area(gp); // General path area object&lt;br /&gt;
      ellipse = new Ellipse2D.Double(w / 4, h / 4, w / 2, h / 2);&lt;br /&gt;
      area2 = new Area(ellipse); // Ellipse area object&lt;br /&gt;
    }&lt;br /&gt;
    public void paint(Graphics g) {&lt;br /&gt;
      Graphics2D g2D = (Graphics2D) g;&lt;br /&gt;
      g2D.setStroke(new BasicStroke(2.0f));&lt;br /&gt;
      g2D.draw(area1);&lt;br /&gt;
      g2D.draw(area2);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Area.intersect ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.awt.BasicStroke;&lt;br /&gt;
import java.awt.Canvas;&lt;br /&gt;
import java.awt.Color;&lt;br /&gt;
import java.awt.Dimension;&lt;br /&gt;
import java.awt.Graphics;&lt;br /&gt;
import java.awt.Graphics2D;&lt;br /&gt;
import java.awt.geom.Area;&lt;br /&gt;
import java.awt.geom.Ellipse2D;&lt;br /&gt;
import java.awt.geom.GeneralPath;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
public class AreaIntersecting extends JPanel {&lt;br /&gt;
  DrawingCanvas canvas;&lt;br /&gt;
  public AreaIntersecting() {&lt;br /&gt;
    canvas = new DrawingCanvas();&lt;br /&gt;
    add(canvas);&lt;br /&gt;
    &lt;br /&gt;
    canvas.area1 = new Area(canvas.gp);&lt;br /&gt;
    canvas.area1.intersect(canvas.area2);&lt;br /&gt;
    canvas.repaint();&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String arg[]) {&lt;br /&gt;
    JFrame frame = new JFrame();&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    frame.getContentPane().add(&amp;quot;Center&amp;quot;, new AreaIntersecting());&lt;br /&gt;
    frame.pack();&lt;br /&gt;
    frame.setSize(new Dimension(400, 300));&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
  class DrawingCanvas extends Canvas {&lt;br /&gt;
    GeneralPath gp;&lt;br /&gt;
    Ellipse2D ellipse;&lt;br /&gt;
    Area area1, area2;&lt;br /&gt;
    public DrawingCanvas() {&lt;br /&gt;
      setBackground(Color.white);&lt;br /&gt;
      setSize(350, 250); // width and height of canvas&lt;br /&gt;
      int w = getWidth();&lt;br /&gt;
      int h = getHeight();&lt;br /&gt;
      gp = new GeneralPath();&lt;br /&gt;
      gp.moveTo(w / 8, h / 2);&lt;br /&gt;
      gp.lineTo(w / 2, h / 4);&lt;br /&gt;
      gp.lineTo(7 * w / 8, h / 2);&lt;br /&gt;
      gp.lineTo(w / 2, 3 * h / 4);&lt;br /&gt;
      gp.closePath();&lt;br /&gt;
      area1 = new Area(gp); // General path area object&lt;br /&gt;
      ellipse = new Ellipse2D.Double(w / 4, h / 4, w / 2, h / 2);&lt;br /&gt;
      area2 = new Area(ellipse); // Ellipse area object&lt;br /&gt;
    }&lt;br /&gt;
    public void paint(Graphics g) {&lt;br /&gt;
      Graphics2D g2D = (Graphics2D) g;&lt;br /&gt;
      g2D.setStroke(new BasicStroke(2.0f));&lt;br /&gt;
      g2D.draw(area1);&lt;br /&gt;
      g2D.draw(area2);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Areas support the following boolean operations: Union, Subtraction, Intersection, Exclusive-or (XOR) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 *&lt;br /&gt;
 * Copyright (c) 1998 Sun Microsystems, Inc. All Rights Reserved.&lt;br /&gt;
 *&lt;br /&gt;
 * Sun grants you (&amp;quot;Licensee&amp;quot;) a non-exclusive, royalty free, license to use,&lt;br /&gt;
 * modify and redistribute this software in source and binary code form,&lt;br /&gt;
 * provided that i) this copyright notice and license appear on all copies of&lt;br /&gt;
 * the software; and ii) Licensee does not utilize the software in a manner&lt;br /&gt;
 * which is disparaging to Sun.&lt;br /&gt;
 *&lt;br /&gt;
 * This software is provided &amp;quot;AS IS,&amp;quot; without a warranty of any kind. ALL&lt;br /&gt;
 * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY&lt;br /&gt;
 * IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR&lt;br /&gt;
 * NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE&lt;br /&gt;
 * LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING&lt;br /&gt;
 * OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS&lt;br /&gt;
 * LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,&lt;br /&gt;
 * INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER&lt;br /&gt;
 * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF&lt;br /&gt;
 * OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE&lt;br /&gt;
 * POSSIBILITY OF SUCH DAMAGES.&lt;br /&gt;
 *&lt;br /&gt;
 * This software is not designed or intended for use in on-line control of&lt;br /&gt;
 * aircraft, air traffic, aircraft navigation or aircraft communications; or in&lt;br /&gt;
 * the design, construction, operation or maintenance of any nuclear&lt;br /&gt;
 * facility. Licensee represents and warrants that it will not use or&lt;br /&gt;
 * redistribute the Software for such purposes.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import java.awt.Color;&lt;br /&gt;
import java.awt.Dimension;&lt;br /&gt;
import java.awt.Graphics;&lt;br /&gt;
import java.awt.Graphics2D;&lt;br /&gt;
import java.awt.event.WindowAdapter;&lt;br /&gt;
import java.awt.event.WindowEvent;&lt;br /&gt;
import java.awt.geom.Area;&lt;br /&gt;
import java.awt.geom.Ellipse2D;&lt;br /&gt;
import javax.swing.JApplet;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
public class Pear extends JApplet {&lt;br /&gt;
  Ellipse2D.Double circle, oval, leaf, stem;&lt;br /&gt;
  Area circ, ov, leaf1, leaf2, st1, st2;&lt;br /&gt;
  public void init() {&lt;br /&gt;
    circle = new Ellipse2D.Double();&lt;br /&gt;
    oval = new Ellipse2D.Double();&lt;br /&gt;
    leaf = new Ellipse2D.Double();&lt;br /&gt;
    stem = new Ellipse2D.Double();&lt;br /&gt;
    circ = new Area(circle);&lt;br /&gt;
    ov = new Area(oval);&lt;br /&gt;
    leaf1 = new Area(leaf);&lt;br /&gt;
    leaf2 = new Area(leaf);&lt;br /&gt;
    st1 = new Area(stem);&lt;br /&gt;
    st2 = new Area(stem);&lt;br /&gt;
    setBackground(Color.white);&lt;br /&gt;
  }&lt;br /&gt;
  public void paint(Graphics g) {&lt;br /&gt;
    Graphics2D g2 = (Graphics2D) g;&lt;br /&gt;
    Dimension d = getSize();&lt;br /&gt;
    int w = d.width;&lt;br /&gt;
    int h = d.height;&lt;br /&gt;
    double ew = w / 2;&lt;br /&gt;
    double eh = h / 2;&lt;br /&gt;
    g2.setColor(Color.green);&lt;br /&gt;
    // Creates the first leaf by filling the intersection of two Area objects&lt;br /&gt;
    // created from an ellipse.&lt;br /&gt;
    leaf.setFrame(ew - 16, eh - 29, 15.0, 15.0);&lt;br /&gt;
    leaf1 = new Area(leaf);&lt;br /&gt;
    leaf.setFrame(ew - 14, eh - 47, 30.0, 30.0);&lt;br /&gt;
    leaf2 = new Area(leaf);&lt;br /&gt;
    leaf1.intersect(leaf2);&lt;br /&gt;
    g2.fill(leaf1);&lt;br /&gt;
    // Creates the second leaf.&lt;br /&gt;
    leaf.setFrame(ew + 1, eh - 29, 15.0, 15.0);&lt;br /&gt;
    leaf1 = new Area(leaf);&lt;br /&gt;
    leaf2.intersect(leaf1);&lt;br /&gt;
    g2.fill(leaf2);&lt;br /&gt;
    g2.setColor(Color.black);&lt;br /&gt;
    // Creates the stem by filling the Area resulting from the subtraction of&lt;br /&gt;
    // two Area objects created from an ellipse.&lt;br /&gt;
    stem.setFrame(ew, eh - 42, 40.0, 40.0);&lt;br /&gt;
    st1 = new Area(stem);&lt;br /&gt;
    stem.setFrame(ew + 3, eh - 47, 50.0, 50.0);&lt;br /&gt;
    st2 = new Area(stem);&lt;br /&gt;
    st1.subtract(st2);&lt;br /&gt;
    g2.fill(st1);&lt;br /&gt;
    g2.setColor(Color.yellow);&lt;br /&gt;
    // Creates the pear itself by filling the Area resulting from the union of&lt;br /&gt;
    // two Area objects created by two different ellipses.&lt;br /&gt;
    circle.setFrame(ew - 25, eh, 50.0, 50.0);&lt;br /&gt;
    oval.setFrame(ew - 19, eh - 20, 40.0, 70.0);&lt;br /&gt;
    circ = new Area(circle);&lt;br /&gt;
    ov = new Area(oval);&lt;br /&gt;
    circ.add(ov);&lt;br /&gt;
    g2.fill(circ);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String s[]) {&lt;br /&gt;
    JFrame f = new JFrame(&amp;quot;Pear&amp;quot;);&lt;br /&gt;
    f.addWindowListener(new WindowAdapter() {&lt;br /&gt;
      public void windowClosing(WindowEvent e) {&lt;br /&gt;
        System.exit(0);&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    JApplet applet = new Pear();&lt;br /&gt;
    f.getContentPane().add(&amp;quot;Center&amp;quot;, applet);&lt;br /&gt;
    applet.init();&lt;br /&gt;
    f.pack();&lt;br /&gt;
    f.setSize(new Dimension(150, 200));&lt;br /&gt;
    f.show();&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Area.Subtract ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.awt.BasicStroke; &lt;br /&gt;
import java.awt.Canvas;&lt;br /&gt;
import java.awt.Color;&lt;br /&gt;
import java.awt.Dimension;&lt;br /&gt;
import java.awt.Graphics;&lt;br /&gt;
import java.awt.Graphics2D;&lt;br /&gt;
import java.awt.geom.Area;&lt;br /&gt;
import java.awt.geom.Ellipse2D;&lt;br /&gt;
import java.awt.geom.GeneralPath;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
public class AreaSubtracting extends JPanel {&lt;br /&gt;
  DrawingCanvas canvas;&lt;br /&gt;
  public AreaSubtracting() {&lt;br /&gt;
    canvas = new DrawingCanvas();&lt;br /&gt;
    add(canvas);&lt;br /&gt;
    &lt;br /&gt;
    canvas.area1 = new Area(canvas.gp);&lt;br /&gt;
    canvas.area1.subtract(canvas.area2);&lt;br /&gt;
    canvas.repaint();&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String arg[]) {&lt;br /&gt;
    JFrame frame = new JFrame();&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    frame.getContentPane().add(&amp;quot;Center&amp;quot;, new AreaSubtracting());&lt;br /&gt;
    frame.pack();&lt;br /&gt;
    frame.setSize(new Dimension(400, 300));&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
  class DrawingCanvas extends Canvas {&lt;br /&gt;
    GeneralPath gp;&lt;br /&gt;
    Ellipse2D ellipse;&lt;br /&gt;
    Area area1, area2;&lt;br /&gt;
    public DrawingCanvas() {&lt;br /&gt;
      setBackground(Color.white);&lt;br /&gt;
      setSize(350, 250); // width and height of canvas&lt;br /&gt;
      int w = getWidth();&lt;br /&gt;
      int h = getHeight();&lt;br /&gt;
      gp = new GeneralPath();&lt;br /&gt;
      gp.moveTo(w / 8, h / 2);&lt;br /&gt;
      gp.lineTo(w / 2, h / 4);&lt;br /&gt;
      gp.lineTo(7 * w / 8, h / 2);&lt;br /&gt;
      gp.lineTo(w / 2, 3 * h / 4);&lt;br /&gt;
      gp.closePath();&lt;br /&gt;
      area1 = new Area(gp); // General path area object&lt;br /&gt;
      ellipse = new Ellipse2D.Double(w / 4, h / 4, w / 2, h / 2);&lt;br /&gt;
      area2 = new Area(ellipse); // Ellipse area object&lt;br /&gt;
    }&lt;br /&gt;
    public void paint(Graphics g) {&lt;br /&gt;
      Graphics2D g2D = (Graphics2D) g;&lt;br /&gt;
      g2D.setStroke(new BasicStroke(2.0f));&lt;br /&gt;
      g2D.draw(area1);&lt;br /&gt;
      g2D.draw(area2);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>