즐거운프로그래밍

[자바] Canvas의 이해와 활용(컬러 적용하기)

수수께끼 고양이 2023. 10. 24. 16:14
728x90
반응형

 

Color 클래스는 RGB 값을 사용하여 색 객체를 생성할 수 있다.

 

 

컬러표

Color 정적 멤버 변수
검정색 Color.black, Color.BLACK
파란색 Color.blue, Color.BLUE
하늘색 Color.cyan, Color.CYAN
짙은 회색 Color.darkGray, Color.DARK_GRAY
회색 Color.gray, Color.GRAY
녹색 Color.green, Color.GREEN
옅은 회색 Color.lightGray, Color.LIGHT_GRAY
진홍색 Color.magenta, Color.MAGENTA
주황색 Color.orange, Color.ORANGE
분홍색 Color.pink, Color.PINK
빨강색 Color.red, Color.RED
하얀색 Color.white, Color.WHITE
노란색 Color.yellow, Color.YELLOW

 

 

이전에 작성해둔 클래스에 색을 추가해본다.

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class Main {
    public static void main(String[] args) {
        Frame frm = new Frame("Canvas Exam");
        frm.setBounds(100,100,200,200);

        Canvas canvas = new CCanvas();
        frm.add(canvas, "Center");

        frm.setVisible(true);

        frm.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                super.windowClosing(e);
                System.exit(0);
            }
        });
    }
}

class CCanvas extends Canvas {
    // Canvas 클래스의 paint() 메서드 오버라이딩
    public void paint(Graphics g) {

        // 배경색, 전경색 채우기
        setBackground(Color.YELLOW);
        setForeground(Color.GRAY);

        // 문자열 그리기
        g.drawString("문자열", 10, 20);

        // 사각형 그리기
        g.drawRect(50, 10, 30, 20);

        // 사각형 채우기
        g.fillRect(100, 10, 30, 20);

        // 각 꼭지점의 X좌표를 int형 배열로 설정
        int xPos[] = {150, 165, 180, 170, 160};

        // 각 꼭지점의 Y좌표를 int 형 배열로 설정
        int yPos[] = {20, 10, 20, 30, 30};

        // 다각형 그리기
        g.drawPolygon(xPos, yPos, 5);

        // 둥근 사각형 그리기
        g.drawRoundRect(10, 50, 40, 40, 10, 10);

        // 타원 그리기
        g.drawOval(60, 50, 50, 20);

        // 호 그리기(부채꼴 모양)
        g.fillArc(100, 50, 40, 40, 45, -75);

        // 선 그리기
        g.drawLine(10, 110, 170, 130);

        // 폰트 색 설정
        int color[] = {10,50,100,150,200,250};
        for(int index=0; index<color.length; index++) {
            g.setColor(new Color(
                    color[index],
                    0,
                    color[5-index]));
            g.drawString(
                    "RGB 색상 선택", 10, 70+ (20*index));
        }
    }
}

 

 

 

728x90
반응형