자바의 Graphics - 2

47196 단어 JavaJava

도형 그리기

• 선, 사각형, 타원 등

Graphics의 메소드

void drawLine(int x1, int y1, int x2, int y2)
// (x1, y1) 좌표부터 (x2, y2) 좌표까지 선을 그린다.

void drawRect(int x, int y, int width, int height)
// (x, y) 좌표에 width x height 크기인 사각형을 그린다.

void drawOval(int x, int y, int width, int height)
// (x, y) 좌표에 width x height 크기인 사각형에 내접하는 타원을 그린다.

void drawRoundRect(int x, int y, int width, int height, int acrWidth, int arcHeight)
// arcWidth : 모서리 원의 수평 반지름
// arcHeight : 모서리 원의 수직 반지름
// (x, y) 좌표에 width x height 크기인 사각형을 그리면서
// 사각형의 4개의 모서리는 arcWidth와 arcHeight를 이용하여 원호로 그린다.

drawLine() 예제

import java.awt.*;
import javax.swing.*;

public class DrawLineExample extends JFrame {
    private ExPanel p = new ExPanel();
    
    public DrawLineExample() {
        super("drawLine 메소드 예제");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setContentPane(p);
        setSize(200, 200);
        setVisible(true);
    }
    
    class ExPanel extends JPanel {
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            g.setColor(Color.BLUE);
            g.drawLine(10, 10, 100, 100);
        }
    }
    
    public static void main(String[] args) {
        new DrawLineExample();
    }
}

실행 결과

drawOval() 예제

import java.awt.*;
import javax.swing.*;

public class DrawOvalExample extends JFrame {
    private ExPanel p = new ExPanel();
    
    public DrawOvalExample() {
        super("drawOval 메소드 예제");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setContentPane(p);
        setSize(200, 200);
        setVisible(true);
    }
    
    class ExPanel extends JPanel {
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            g.setColor(Color.BLUE);
            g.drawOval(10, 10, 100, 100);
        }
    }
    
    public static void main(String[] args) {
        new DrawOvalExample();
    }
}

실행 결과

drawRect() 예제

import java.awt.*;
import javax.swing.*;

public class DrawRectExample extends JFrame {
    private ExPanel p = new ExPanel();
    
    public DrawOvalExample() {
        super("drawRect 메소드 예제");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setContentPane(p);
        setSize(200, 200);
        setVisible(true);
    }
    
    class ExPanel extends JPanel {
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            g.setColor(Color.BLUE);
            g.drawRect(10, 10, 100, 100);
        }
    }
    
    public static void main(String[] args) {
        new DrawRectExample();
    }
}

실행 결과

drawRoundRect() 예제

import java.awt.*;
import javax.swing.*;

public class DrawRoundRectExample extends JFrame {
    private ExPanel p = new ExPanel();
    
    public DrawRoundRectExample() {
        super("drawRoundRect 메소드 예제");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setContentPane(p);
        setSize(200, 200);
        setVisible(true);
    }
    
    class ExPanel extends JPanel {
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            g.setColor(Color.BLUE);
            g.drawRoundRect(20, 20, 120, 80, 40, 60);
        }
    }
    
    public static void main(String[] args) {
        new DrawRoundRectExample();
    }
}

실행 결과

drawArc() 예제

import java.awt.*;
import javax.swing.*;

public class DrawArcExample extends JFrame {
    private ExPanel p = new ExPanel();
    
    public DrawArcExample() {
        super("drawArc 메소드 예제");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setContentPane(p);
        setSize(200, 200);
        setVisible(true);
    }
    
    class ExPanel extends JPanel {
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            g.setColor(Color.BLUE);
            g.drawArc(20, 20, 100, 100, 90, 270);
            // (20, 20) 좌표에 생성
            // 100 x 100 사각형에 내접한 원의 원호
            // 90도부터 270도인 원호를 생성
        }
    }
    
    public static void main(String[] args) {
        new DrawArcExample();
    }
}

실행 결과

drawPolygon() 예제

import java.awt.*;
import javax.swing.*;

public class DrawPolygonExample extends JFrame {
    private ExPanel p = new ExPanel();
    
    public DrawPolygonExample() {
        super("drawPolygon 메소드 예제");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setContentPane(p);
        setSize(200, 200);
        setVisible(true);
    }
    
    class ExPanel extends JPanel {
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            g.setColor(Color.BLUE);
            
            int[] x = {80, 40, 80, 120};
            int[] y = {10, 90, 170, 90};
            g.drawPolygon(x, y, 4);
            // x, y 배열의 점들 중 4개를 연결하는 폐다각형 그리기
        }
    }
    
    public static void main(String[] args) {
        new DrawRectExample();
    }
}

실행 결과

도형 칠하기

• 도형을 그리고 도형 내부를 칠하는 기능
• 도형의 외곽선과 내부를 따로 칠하는 기능은 없다.

• 도형을 칠하기 위한 메소드

void fillRect(int x, int y, int width, int height)

void fillOval(int x, int y, int width, int height)

void fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight)

void fillArc(int x, int y, int width, int height, int startAngle, int arcAngle)

void follPolygon(int[] x, int[] y, int n)

예제

import java.awt.*;
import javax.swing.*;

public class FillExample extends JFrame {
    private ExPanel p = new ExPanel();
    
    public FillExample() {
        super("도형 칠하기 예제");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setContentPane(p);
        setSize(300, 400);
        setVisible(true);
    }
    
    class ExPanel extends JPanel {
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            g.setColor(Color.BLUE);
            g.fillRect(100, 10, 60, 60);
            
            g.setColor(Color.RED);
            g.fillOval(100, 80, 60, 60);
            
            g.setColor(Color.MAGENTA);
            g.fillRoundRect(100, 150, 60, 60, 30, 30);
            
            g.setColor(Color.GREEN);
            g.fillArc(100, 220, 60, 60, 90, 270);
            
            int[] x = {130, 100, 130, 160};
            int[] y = {290, 320, 350, 320};
            g.setColor(Color.ORANGE);
            g.fillPolygon(x, y, 4);
        }
    }
    
    public static void main(String[] args) {
        new FillExample();
    }
}

실행 결과

좋은 웹페이지 즐겨찾기