このページには、以下のサンプルを掲載しています。
下の項目をクリックをすると各サンプルにジャンプします。
※2週間以内の新着記事はNewアイコン、更新記事はUpアイコンが表示されます。
■図形の切り抜き
[ サンプルプログラムのソースコード - BooleanSample01.java - ]
- package sample.applet;
- import javax.swing.JApplet;
- import java.awt.Color;
- import java.awt.Graphics;
- import java.awt.Graphics2D;
- import java.awt.geom.Area;
- import java.awt.geom.Ellipse2D;
- public class BooleanSample01 extends JApplet {
- public void paint(Graphics g){
- Graphics2D g2 = (Graphics2D)g;
- Ellipse2D e1 = new Ellipse2D.Double(10,10,100,100);
- Ellipse2D e2 = new Ellipse2D.Double(15,15,100,100);
- Area a1 = new Area(e1);
- Area a2 = new Area(e2);
- a2.subtract(a1);
- g2.setColor(Color.YELLOW);
- g2.fill(a2);
- g2.setColor(Color.BLACK);
- g2.draw(a2);
- }
- }
|
[ サンプルプログラムの実行結果 ]
[ サンプルプログラムの解説 ]
14行目で定義した円「e2」の領域から13行目で定義した円「e1」の領域の部分を切り取っています。
15、16行目で円「e1」と「e2」の領域定義を行い、17行目で円「e2」の領域を定義したオブジェクト「a2」から
subtractメソッドを使って円「e1」の領域を定義したオブジェクト「a1]を切り取っています。
図示すると下記のような感じです。
|
■図形の合成(論理和)
[ サンプルプログラムのソースコード - BooleanSample02.java - ]
- package sample.applet;
- import javax.swing.JApplet;
- import java.awt.Color;
- import java.awt.Graphics;
- import java.awt.Graphics2D;
- import java.awt.geom.Area;
- import java.awt.geom.Ellipse2D;
- public class BooleanSample02 extends JApplet {
- public void paint(Graphics g){
- Graphics2D g2 = (Graphics2D)g;
- Ellipse2D e1 = new Ellipse2D.Double(40,10,100,100);
- Ellipse2D e2 = new Ellipse2D.Double(10,40,160,40);
- Area a1 = new Area(e1);
- Area a2 = new Area(e2);
- a2.add(a1);
- g2.setColor(Color.MAGENTA);
- g2.fill(a2);
- g2.setColor(Color.BLACK);
- g2.draw(a2);
- }
- }
|
[ サンプルプログラムの実行結果 ]
[ サンプルプログラムの解説 ]
13行目で定義した円「e1」の領域と14行目で定義した楕円「e2」の領域を合わせた領域が表示されます。
15、16行目で円「e1」と「e2」の領域定義を行い、17行目で円「e1」の領域を定義したオブジェクト「a1」に
addメソッドを使って楕円「e2」の領域を定義したオブジェクト「a2]を加えています。
図示すると下記のような感じです。
|
■図形の合成(論理積)
[ サンプルプログラムのソースコード - BooleanSample03.java - ]
- package sample.applet;
- import javax.swing.JApplet;
- import java.awt.Color;
- import java.awt.Graphics;
- import java.awt.Graphics2D;
- import java.awt.geom.Area;
- import java.awt.geom.Ellipse2D;
- public class BooleanSample03 extends JApplet {
- public void paint(Graphics g){
- Graphics2D g2 = (Graphics2D)g;
- Ellipse2D e1 = new Ellipse2D.Double(-80,-30,200,200);
- Ellipse2D e2 = new Ellipse2D.Double(80,-30,200,200);
- Area a1 = new Area(e1);
- Area a2 = new Area(e2);
- a2.intersect(a1);
- g2.setColor(Color.CYAN);
- g2.fill(a2);
- g2.setColor(Color.BLACK);
- g2.draw(a2);
- }
- }
|
[ サンプルプログラムの実行結果 ]
[ サンプルプログラムの解説 ]
13行目で定義した円「e1」の領域と14行目で定義した円「e2」の領域を合わせた領域のうち共通の部分のみ表示されます。
15、16行目で円「e1」と「e2」の領域定義を行い、17行目で円「e1」の領域を定義したオブジェクト「a1」と
円「e2」の領域を定義したオブジェクト「a2]との共通部分をintersectメソッドでオブジェクト「a1」の新たな領域とします。
図示すると下記のような感じです。
|
■図形の合成(排他的論理和)
[ サンプルプログラムのソースコード - BooleanSample04.java - ]
- package sample.applet;
- import javax.swing.JApplet;
- import java.awt.Color;
- import java.awt.Graphics;
- import java.awt.Graphics2D;
- import java.awt.geom.Area;
- import java.awt.geom.Ellipse2D;
- public class BooleanSample04 extends JApplet {
- public void paint(Graphics g){
- Graphics2D g2 = (Graphics2D)g;
- Ellipse2D e1 = new Ellipse2D.Double(10,10,100,100);
- Ellipse2D e2 = new Ellipse2D.Double(80,10,100,100);
- Area a1 = new Area(e1);
- Area a2 = new Area(e2);
- a2.exclusiveOr(a1);
- g2.setColor(Color.ORANGE);
- g2.fill(a2);
- g2.setColor(Color.BLACK);
- g2.draw(a2);
- }
- }
|
[ サンプルプログラムの実行結果 ]
[ サンプルプログラムの解説 ]
13行目で定義した円「e1」の領域と14行目で定義した円「e2」の領域を合わせた領域のうち共通以外の部分が表示されます。
15、16行目で円「e1」と「e2」の領域定義を行い、17行目で円「e1」の領域を定義したオブジェクト「a1」と
円「e2」の領域を定義したオブジェクト「a2]との共通部分以外の領域をexclusiveOrメソッドでオブジェクト「a1」の新たな領域とします。
図示すると下記のような感じです。
|