티스토리 뷰

29일차 오늘은 Graphics, Adapter, WindowEvent에 대해 학습했다.

 

drawLine  drawLine(int x1, int y1, int x2, int y2)  좌표(x1, y1)에서 좌표(x2, y2)까지 직선을 그린다. 
drawPolyline drawPolyline(int[] xpoints, int[] ypoints
                 int umpoints) 
러 개의 직선을 이어서 그린다.

 

drawLine : x1, y1 에서 x2, y2 까지 직선을 그린다.

 

drawLine을 학습하고 있던 도중에 불현 듯 아주 기발한 생각이 났다. ㅋㅋㅋㅋㅋㅋㅋ 바로 난수를 활용해서 엄청 많은 선을 그려보고 싶어진 것이다. x1, y1 좌표는 Frame Size의 half값으로 fix하고, x2, y2 좌표를 반복문을 활용한 난수를 통해서 가운데에서 엄청 많은 선이 뻗어나가는것을 상상하면서 작성했다.

 

. 실행코드

import java.awt.Frame;
import java.awt.Graphics;

public class Main extends Frame{
	
	public Main(String title) {
		super(title);
		
		setSize(300, 300);
		setVisible(true);
	
	}
	
	public void paint(Graphics g) {
		for(int i = 0; i < 300; i ++) {
			
			int x = (int)(Math.random() * 300);
			int y = (int)(Math.random() * 300);

			
			g.drawLine(150, 150, x, y);
		
		}
	}
	
	public static void main(String[] args) {
		new Main("Test.");
	}
}

.실행결과

 

상상보다 별로였음.

 

 

public void drawRect(int x, int y, int width, int height)
좌표 (x, y)로부터 너비가 width이고 높이가 height인 사각형을 그린다.
public void drawRoundRect(int x, int y, int width, int height,
                                                    int arcWidth, int arcHeight)
(x, y)로부터 너비가 width이고 높이가 height인 모서리가 둥근 사각형을 그린다.
arcWidth 와 arcHeight는 모서리의 크기를 정한다.
public void drawOval(int x, int y, int width, int height)
(x, y)로부터 너비가 width이고 높이가 height인 사각형안에 들어가는 타원을 그린다.
width와 height가 같으면 원이 된다.
public void drawArc(int x, int y, int width, int height,
                                                  int startAngle, int arcAngle)
(x, y)로부터 너비가 width이고 높이가 height인 사각형안에 들어가는 원호를 그린다.
startAngle은 원호의 시작 각(도)이고, arcAngle은 원호로 형성되는 부채꼴의 각이다.
public void drawPolygon(int xPoints[], int yPoints[], int nPoints)
다각형을 그린다. 배열 xPoints와 yPoints는 꼭지점의 x와 y의 집합이고, nPoints는 다각형의 꼭지점 개수로 배열의 크기와 일치한다.
public void drawPolygon(Polygon p)
다각형 p를 그린다. Polygon은 다각형을 구현하는 클래스이다.

 

. 실행코드

package ja_0809;

import java.awt.Color;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class Graphics_2 extends Frame{
	
	public static void main(String[] args) {
		new Graphics_2("Graphics Test");
	}
	
	public void paint(Graphics g) {
		
		g.setFont(new Font("Serif", Font.PLAIN, 17));
		g.drawString("Graphics 를 이용해 그림을 그립니다. ", 10, 50);
		
		g.drawOval(50, 100, 50, 50);
		
		g.setColor(Color.blue);
		g.fillOval(100, 100, 50, 50);
		
		g.setColor(Color.red);
		g.drawLine(100, 100, 150, 150);
		
		g.fillRoundRect(200, 100, 120, 80, 30, 30);
		
//		g.setColor(Color.orange);
//		g.fillPolygon(new int[] { 50, 100, 50, 25, 25},
//				new int[] { 250, 200, 250, 300, 300}, 5);
		
		g.setColor(Color.orange);
		g.fillPolygon(new int[] { 50, 100, 150, 125, 75},
				new int[] { 250, 200, 250, 300, 300}, 5);
//		
//		g.setColor(Color.red);
//		g.fillPolygon(new int[] { 70, 100, 130, 115, 85},
//				new int[] { 250, 200, 250, 300, 300}, 5);
//		
//		
		
		g.setColor(new Color(155, 50, 50));
		g.fillArc(250, 200, 100, 100, 45, 270);
	}
	
	public Graphics_2(String title) {
		super(title);
		
		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent we) {
				System.exit(0);
			}
		});
		
		setBounds(100, 100, 400, 400);
		setVisible(true);
	}

}

.실행결과

 

Graphics를 활용해 그린 그림

 

'back > Java' 카테고리의 다른 글

KH 30일차(Swing)  (0) 2022.08.11
KH 29일차(Graphics, Font, Image EVENT)  (5) 2022.08.10
KH 28일차(AWT CheckboxEvent)  (0) 2022.08.08
KH 27일차(AWT ActionEvent)  (0) 2022.08.06
KH 26일차(CardLayout, GridLayout)  (0) 2022.08.04
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
링크