Javaグラフィックサンプル(Swing版):図形の合成

Javaグラフィックサンプル(Swing版):図形合成に関する図形描画サンプルです。2つの図形から論理和、論理積、差、はいた論理和をとって図形の合成を行うサンプルです。

Home > サンプル集 > Swingサンプル集 > 図形の合成-Swing版-


図形の合成-Swing版-

このページには、以下のサンプルを掲載しています。 下の項目をクリックをすると各サンプルにジャンプします。 ※2週間以内の新着記事はNewアイコン、更新記事はUpアイコンが表示されます。
  1. 図形の切り抜き ( BooleanSample01.java )  
  2. 図形の合成(論理和) ( BooleanSample02.java )  
  3. 図形の合成(論理積)( BooleanSample03.java )  
  4. 図形の合成(排他的論理和)( BooleanSample04.java )  

■図形の切り抜き

[ サンプルプログラムのソースコード - BooleanSample01.java - ]
  1. import javax.swing.JFrame;
  2. import java.awt.Color;
  3. import java.awt.Graphics;
  4. import java.awt.Graphics2D;
  5. import java.awt.geom.Area;
  6. import java.awt.geom.Ellipse2D;
  7. public class BooleanSample01 extends JFrame {
  8.   private static final long serialVersionUID = 1L;
  9.   public BooleanSample01() {
  10.     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  11.   }
  12.   public void paint(Graphics g){
  13.     super.paint(g);
  14.     Graphics2D g2 = (Graphics2D)g;
  15.     g2.clearRect(0, 0, getWidth(), getHeight());
  16.     Ellipse2D e1 = new Ellipse2D.Double(40,50,100,100);
  17.     Ellipse2D e2 = new Ellipse2D.Double(45,55,100,100);
  18.     Area a1 = new Area(e1);
  19.     Area a2 = new Area(e2);
  20.     a2.subtract(a1);
  21.     g2.setColor(Color.YELLOW);
  22.     g2.fill(a2);
  23.     g2.setColor(Color.BLACK);
  24.     g2.draw(a2);
  25.   }
  26.   public static void main(String[] args) {
  27.     JFrame f = new BooleanSample01();
  28.     f.setTitle("Swingサンプル(図形の合成:切抜き)");
  29.     f.setResizable(false);
  30.     f.setSize(200,200);
  31.     f.setBackground(Color.WHITE);
  32.     f.setVisible(true);
  33.   }
  34. }
[ サンプルプログラムの実行結果 ]

[ 関連ページ ]
図形の合成のアプレット版サンプル




■図形の合成(論理和)

[ サンプルプログラムのソースコード - BooleanSample02.java - ]
  1. import javax.swing.JFrame;
  2. import java.awt.Color;
  3. import java.awt.Graphics;
  4. import java.awt.Graphics2D;
  5. import java.awt.geom.Area;
  6. import java.awt.geom.Ellipse2D;
  7. public class BooleanSample02 extends JFrame {
  8.   private static final long serialVersionUID = 1L;
  9.   public BooleanSample02() {
  10.     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  11.   }
  12.   public void paint(Graphics g){
  13.     super.paint(g);
  14.     Graphics2D g2 = (Graphics2D)g;
  15.     g2.clearRect(0, 0, getWidth(), getHeight());
  16.     Ellipse2D e1 = new Ellipse2D.Double(50,50,100,100);
  17.     Ellipse2D e2 = new Ellipse2D.Double(20,80,160,40);
  18.     Area a1 = new Area(e1);
  19.     Area a2 = new Area(e2);
  20.     a2.add(a1);
  21.     g2.setColor(Color.MAGENTA);
  22.     g2.fill(a2);
  23.     g2.setColor(Color.BLACK);
  24.     g2.draw(a2);
  25.   }
  26.   public static void main(String[] args) {
  27.     JFrame f = new BooleanSample02();
  28.     f.setTitle("Swingサンプル(図形の合成:論理和)");
  29.     f.setResizable(false);
  30.     f.setSize(200,200);
  31.     f.setBackground(Color.WHITE);
  32.     f.setVisible(true);
  33.   }
  34. }
[ サンプルプログラムの実行結果 ]

[ 関連ページ ]
図形の合成のアプレット版サンプル




■図形の合成(論理積)

[ サンプルプログラムのソースコード - BooleanSample03.java - ]
  1. import javax.swing.JFrame;
  2. import java.awt.Color;
  3. import java.awt.Graphics;
  4. import java.awt.Graphics2D;
  5. import java.awt.geom.Area;
  6. import java.awt.geom.Ellipse2D;
  7. public class BooleanSample03 extends JFrame {
  8.   private static final long serialVersionUID = 1L;
  9.   public BooleanSample03() {
  10.     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  11.   }
  12.   public void paint(Graphics g){
  13.     super.paint(g);
  14.     Graphics2D g2 = (Graphics2D)g;
  15.     g2.clearRect(0, 0, getWidth(), getHeight());
  16.     Ellipse2D e1 = new Ellipse2D.Double(-80,10,200,200);
  17.     Ellipse2D e2 = new Ellipse2D.Double(80,10,200,200);
  18.     Area a1 = new Area(e1);
  19.     Area a2 = new Area(e2);
  20.     a2.intersect(a1);
  21.     g2.setColor(Color.CYAN);
  22.     g2.fill(a2);
  23.     g2.setColor(Color.BLACK);
  24.     g2.draw(a2);
  25.   }
  26.   public static void main(String[] args) {
  27.     JFrame f = new BooleanSample03();
  28.     f.setTitle("Swingサンプル(図形の合成:論理積)");
  29.     f.setResizable(false);
  30.     f.setSize(200,200);
  31.     f.setBackground(Color.WHITE);
  32.     f.setVisible(true);
  33.   }
  34. }
[ サンプルプログラムの実行結果 ]

[ 関連ページ ]
図形の合成のアプレット版サンプル




■図形の合成(排他的論理和)

[ サンプルプログラムのソースコード - BooleanSample04.java - ]
  1. import javax.swing.JFrame;
  2. import java.awt.Color;
  3. import java.awt.Graphics;
  4. import java.awt.Graphics2D;
  5. import java.awt.geom.Area;
  6. import java.awt.geom.Ellipse2D;
  7. public class BooleanSample04 extends JFrame {
  8.   private static final long serialVersionUID = 1L;
  9.   public BooleanSample04() {
  10.     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  11.   }
  12.   public void paint(Graphics g){
  13.     super.paint(g);
  14.     Graphics2D g2 = (Graphics2D)g;
  15.     g2.clearRect(0, 0, getWidth(), getHeight());
  16.     Ellipse2D e1 = new Ellipse2D.Double(10,50,100,100);
  17.     Ellipse2D e2 = new Ellipse2D.Double(80,50,100,100);
  18.     Area a1 = new Area(e1);
  19.     Area a2 = new Area(e2);
  20.     a2.exclusiveOr(a1);
  21.     g2.setColor(Color.ORANGE);
  22.     g2.fill(a2);
  23.     g2.setColor(Color.BLACK);
  24.     g2.draw(a2);
  25.   }
  26.   public static void main(String[] args) {
  27.     JFrame f = new BooleanSample04();
  28.     f.setTitle("Swingサンプル(図形の合成:排他的論理和)");
  29.     f.setResizable(false);
  30.     f.setSize(200,200);
  31.     f.setBackground(Color.WHITE);
  32.     f.setVisible(true);
  33.   }
  34. }
[ サンプルプログラムの実行結果 ]

[ 関連ページ ]
図形の合成のアプレット版サンプル






最終更新日:2019/02/13

2015-03-01からの訪問者数
  1599 人