๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Study/Java

์ž๋ฐ”ํ”„๋กœ๊ทธ๋ž˜๋ฐ 11์ฃผ์ฐจ ์ •๋ฆฌ

์ˆ˜์—…๋‚ ์งœ/์ •๋ฆฌ๋‚ ์งœ

2022.05.17/2022.05.22

 

ํ•™์Šต์ฃผ์ œ
  • 11 ๊ทธ๋ž˜ํ”ฝ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

 

ํ•™์Šต๋‚ด์šฉ

11 ๊ทธ๋ž˜ํ”ฝ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

๊ทธ๋ž˜ํ”ฝ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ธฐ์ดˆ

โ‘  ํ”„๋ ˆ์ž„ ์ƒ์„ฑํ•˜๊ธฐ

public class BasicPaint{
	public static void main(String[] args){
    	JFrame f = new JFrame("๊ทธ๋ž˜ํ”ฝ ๊ธฐ์ดˆ ํ”„๋กœ๊ทธ๋žจ");	// JFrame ๊ฐ์ฒด ์ƒ์„ฑ (์ƒ์„ฑ์ž ์ˆ˜์ •๋ถˆ๊ฐ€)
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setSize(300, 200);
        f.setVisible(true);
    }
}

โ‘ก ์ƒ์„ฑ๋œ ํ”„๋ ˆ์ž„์— ํŒจ๋„ ์ถ”๊ฐ€ํ•˜์—ฌ ๊ทธ๋ฆฌ๊ธฐ (→ JPanel์ด ๊ฐ์ข… ๊ทธ๋ฆฌ๊ธฐ ๋ฉ”์†Œ๋“œ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ)

public class BasicPaint{
	public static void main(String[] args){
    	JFrame f = new JFrame("๊ทธ๋ž˜ํ”ฝ ๊ธฐ์ดˆ ํ”„๋กœ๊ทธ๋žจ");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.add(new MyPanel());
        f.setSize(300, 200);
        f.setVisible(true);
	}
}

class MyPanel extends JPanel{
	public MyPanel(){
    	...
    }
}

โ‘ข paintComponent()๋ฅผ ์ค‘๋ณต ์ •์˜. ์ฆ‰, ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•˜๊ธฐ

  - paintComponent()๋Š” ํŒจ๋„์ด ํ™”๋ฉด์— ๊ทธ๋ ค์งˆ ๋•Œ ์ž๋™ ํ˜ธ์ถœ

class MyPanel extends JPanel{
	public void paintComponent(Graphics g){		// ๋ฉ”์†Œ๋“œ ์ค‘๋ณต ์ •์˜  // ๊ฐ์ฒด g
    	super.paintComponent(g);
        // ์—ฌ๊ธฐ์— ๊ทธ๋ฆฌ๋Š” ์ฝ”๋“œ ์ž‘์„ฑ
        // ์ด๋ฏธ์ง€๋ฅผ ๊ทธ๋ฆฌ๊ฑฐ๋‚˜ ์‚ฌ๊ฐํ˜• ๊ทธ๋ฆฌ๊ฑฐ๋‚˜...
        // ์ด๋•Œ, ๊ทธ๋ฆฌ๊ธฐ์— ํ•„์š”ํ•œ ๋„๊ตฌ์™€ ์„ค์ •๊ฐ’ ๋“ฑ Graphics์—์„œ ์ œ๊ณตํ•œ๋‹ค.
}

// super.~: ๋ถ€๋ชจ๊ฐ€ ๋จผ์ € ๊ทธ๋ฆฌ๊ณ  ์ž์‹์ด ๊ทธ๋ฆผ -> ์ƒˆ ์ข…์ด์— ๊ทธ๋ฆฐ๋‹ค๊ณ  ์ƒ๊ฐ.  ๋ถ€๋ชจ๊ฐ€ ์—†๋‹ค๋ฉด ์ด๋ฉด์ง€์— ๊ณ„์† ๊ทธ๋ฆฌ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Œ

 

๊ทธ๋ž˜ํ”ฝ ์ขŒํ‘œ๊ณ„

๊ฐ€๋กœ๋กœ 100, ์„ธ๋กœ๋กœ 80๋งŒํผ ์ด๋™ํ•œ ์‚ฌ๊ฐํ˜•

 

๊ทธ๋ฆผ ๊ทธ๋ฆฌ๋Š” ๋ฉ”์†Œ๋“œ

  • ๊ทธ๋ฆฌ๊ธฐ ๋ฉ”์†Œ๋“œ๋Š” Graphics์—์„œ ์ œ๊ณต
  • ex) ์‚ฌ๊ฐํ˜• ๊ทธ๋ฆฌ๋Š” ๋„๊ตฌ: drawRect(), ์› ๊ทธ๋ฆฌ๋Š” ๋„๊ตฌ: drawOval()
  • ex) g.drawRect(50, 30, 20, 10) : x:50, y:30, w:20, h:10
  • ์›์˜ ๊ฒฝ์šฐ, ์‚ฌ๊ฐํ˜•์— ๋‚ด์ ‘ํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐ → ์‚ฌ๊ฐํ˜•์˜ ์ฒซ ์‹œ์ž‘์  (๋‹ค๋ฅธ ๋„ํ˜•๋„ ๋งˆ์ฐฌ๊ฐ€์ง€..)

 

์ด๋ฒคํŠธ์™€ ๊ทธ๋ž˜ํ”ฝ์˜ ๊ฒฐํ•ฉ

public class BasicPaint{
	public static void main(String[] args){
    	JFrame f = new JFrame("๊ทธ๋ž˜ํ”ฝ ๊ธฐ์ดˆ ํ”„๋กœ๊ทธ๋žจ");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.add(new MyPanel());
        f.setSize(300, 200);
        f.setVisible(true);
    }
}

class MyPanel extends JPanel{
	private int squareX = 50;
    private int squareY = 50;
    private int squareW = 20;
    private int squareH = 20;
}

public MyPanel(){	// ์ƒ์„ฑ์ž
	setBorder(BorderFactory.createLineBorder(Color.black));	// BorderFactory: ์„  ์ƒ์„ฑ / creatLineBorder:์‹ค์„ ์˜ ๊ฒฝ๊ณ„์„ 
    addMouseListener(new MouseAdapter(){
    	public void mousePressed(MouseEvent e){
        	moveSquare(e.getX(), e.getY());}	// ๋งŒ๋“  ๋ฉ”์†Œ๋“œ
    });
    addMouseMotionListener(new MouseMotionAdapter(){
    	public void mouseDragged(MouseEvent e){
        	moveSquare(e.getX(), e.getY());}	// ๋งŒ๋“  ๋ฉ”์†Œ๋“œ
    });
}

private void moveSquare(int x, int y){
	sqareX = x;
    sqareY = y;
    repaint();}		// repaint: ๋งˆ์šฐ์Šค ๋ˆŒ๋ฆฐ ๋ถ€๋ถ„ ๋‹ค์‹œ ๊ทธ๋ฆฌ๊ธฐ
}

protected void paintComponent(Graphics g){	// ๋ถ€๋ชจ์—๊ฒŒ ๋ฐ›์Œ
	super.paintComponent(g);
    g.drawString("๋งˆ์šฐ์Šค๋ฅผ ํด๋ฆญํ•˜๋ฉด ์‚ฌ๊ฐํ˜•์ด ๊ทธ๋ ค์ง‘๋‹ˆ๋‹ค!", 10, 20)	// drawString: ๊ธ€์ž ๊ทธ๋ฆผ(๋ฌธ์ž์—ด ์”€) / 10, 20 : x, y
	g.setColor(Color.RED);
	g.fillRect(squareX, squareY, squareW, squareH);
	g.setColor(Color.BLACK);
	g.drawRect(squareX, squareY, squareW, squareH);
}

 

๊ธฐ์ดˆ ๋„ํ˜• ๊ทธ๋ฆฌ๊ธฐ

๊ธฐ์ดˆ ๋„ํ˜• ๊ด€๋ จ๋œ ๋ฉ”์†Œ๋“œ
์ง์„  drawLine(), drawPolyline()
์‚ฌ๊ฐํ˜• drawRect(), fillRect(), clearRect()
3์ฐจ์› ์‚ฌ๊ฐํ˜• draw3DRect(), fill3DRect()
๋‘ฅ๊ทผ ์‚ฌ๊ฐํ˜• drawRoundRect(), fillRoundRect()
ํƒ€์› drawOval(), fillOval()
ํ˜ธ drawArc(), fillArc()
๋‹ค๊ฐํ˜• drawPolygon(), fillPolygon()

 

์ง์„ /์‚ฌ๊ฐํ˜• ๊ทธ๋ฆฌ๊ธฐ

๋ฉ”์†Œ๋“œ ์„ค๋ช…
drawLine(int x1, int y1, int x2, int y2) ์ขŒํ‘œ(x1, y1)์—์„œ ์ขŒํ‘œ(x2, y2)๊นŒ์ง€ ์ง์„ ์„ ๊ทธ๋ฆฐ๋‹ค.
drawPolyline(int[] xpoints, int[] ypoints, int numpoints) ๋ฐฐ์—ด xpoints[]์™€ ๋ฐฐ์—ด ypoints[]์„ ๊ฐ€์ง€๊ณ  ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ง์„ ์„ ๊ทธ๋ฆฐ๋‹ค. polygon๊ณผ ๋‹ค๋ฅธ ์ ์€ ์ฒซ๋ฒˆ์งธ ์ ๊ณผ ๋งˆ์ง€๋ง‰ ์ ์ด ์—ฐ๊ฒฐ๋˜์ง€ ์•Š๋Š”๋‹ค.
๋ฉ”์†Œ๋“œ ์„ค๋ช…
drawRect(int x, int y, int width, int height) ์™ผ์ชฝ ์ƒ๋‹จ ์ขŒํ‘œ (x, y)
fillRect(int x, int y, int width, int height) ์ฑ„์›Œ์ง„ ์‚ฌ๊ฐํ˜•
draw3DRect(int x, int y, int width, int height, boolen raised) 3D ์‚ฌ๊ฐํ˜•
fill3DRect(int x, int y, int width, int height, boolean raised) ์ฑ„์›Œ์ง„ 3D ์‚ฌ๊ฐํ˜•
drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight) ๋ชจ์„œ๋ฆฌ ๋‘ฅ๊ทผ ์‚ฌ๊ฐํ˜•
fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight) ์ฑ„์›Œ์ง„ ๋ชจ์„œ๋ฆฌ ๋‘ฅ๊ทผ ์‚ฌ๊ฐํ˜•

 

ํƒ€์›/ํ˜ธ ๊ทธ๋ฆฌ๊ธฐ

๋ฉ”์†Œ๋“œ ์„ค๋ช…
drawOval(int x, int y, int width, int height) ์ขŒ์ธก ์ƒ๋‹จ์˜ ์ขŒํ‘œ๊ฐ€ x, y ์ด๋ฉฐ ํญ width, ๋†’์ด height์˜ ์‚ฌ๊ฐํ˜• ์•ˆ์— ๋‚ด์ ‘ํ•˜๋Š” ํƒ€์›์„ ๊ทธ๋ฆฐ๋‹ค.
fillOval(int x, int y, int width, int height) ์ฑ„์›Œ์ง„ ํƒ€์›์„ ๊ทธ๋ฆฐ๋‹ค.
๋ฉ”์†Œ๋“œ ์„ค๋ช…
drawArc(int x, int y, int width, int height, int startAngle, int arcAngle) ์ขŒ์ธก ์ƒ๋‹จ์˜ ์ขŒํ‘œ๊ฐ€ x, y ์ด๋ฉฐ ํญ width, ๋†’์ด height์˜ ์‚ฌ๊ฐํ˜• ์•ˆ์— ๋‚ด์ ‘ํ•˜๋Š” ํƒ€์›์„ startAngle์„ ์‹œ์ž‘ ๊ฐ๋„๋กœ ํ•˜์—ฌ arcAngle์˜ ๊ฐ๋„๋งŒํผ์˜ ํ˜ธ๋ฅผ ๊ทธ๋ฆฐ๋‹ค.
fillArc(int x, int y, int width, int height, int startAngle, int arcAngle) ์ขŒ์ธก ์ƒ๋‹จ์˜ ์ขŒํ‘œ๊ฐ€ x, y ์ด๋ฉฐ ํญ width, ๋†’์ด height์˜ ์‚ฌ๊ฐํ˜• ์•ˆ์— ๋‚ด์ ‘ํ•˜๋Š” ํƒ€์›์„ startAngle์„ ์‹œ์ž‘ ๊ฐ๋„๋กœ ํ•˜์—ฌ arcAngle์˜ ๊ฐ๋„๋งŒํผ์˜ ์ฑ„์›Œ์ง„ ํ˜ธ๋ฅผ ๊ทธ๋ฆฐ๋‹ค.

 

์ƒ‰์ƒ

  • java.awt ํŒจํ‚ค์ง€์˜ ์ผ๋ถ€์ธ Color ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • ๋น›์˜ 3์›์ƒ‰์ธ Red ์„ฑ๋ถ„, Green ์„ฑ๋ถ„, Blue ์„ฑ๋ถ„์ด ์–ผ๋งˆ๋‚˜ ํ•จ์œ ๋˜์–ด ์žˆ๋Š”์ง€๋ฅผ 0์—์„œ 255๊นŒ์ง€์˜ ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‚˜ํƒ€๋‚ธ๋‹ค.
ํด๋ž˜์Šค ๋ณ€์ˆ˜ ์ด๋ฆ„ ์ƒ‰์ƒ RGB ๊ฐ’
Color.black black (0, 0, 0)
Color.blue blue (0, 0, 255)
Color.cyan cyan (0, 255, 255)
Color.gray gray (128, 128, 128)
Color.darkGray dark gray (64, 64, 64)
Color.lightGray light gray (192, 192, 192)
Color.green green (0, 255, 0)
Color.magenta magenta (255, 0, 255)
Color.orange orange (255, 200, 0)
Color.pink pink (255, 175, 175)
Color.red red (255, 0, 0)
Color.white white (255, 255, 255)
Color.yellow yellow 255, 255, 0)

 

์ƒ‰์ƒ ์„ค์ •

  • ๋งˆ์  ํƒ€ ์ƒ‰์ƒ ์–ป๋Š” ๋ฐฉ๋ฒ•
    • Color c = Color.magenta;  /  Color c = new Color (255, 0 255); // ๋งˆ์  ํƒ€ ์ƒ‰ ๊ฐ€์ง„ ๊ฐ์ฒด ์ƒ์„ฑ
  • Color์—๋Š” ์•ŒํŒŒ(alpha)๊ฐ’, ์ฆ‰ ํˆฌ๋ช…๋„๋ฅผ ํฌํ•จํ•œ๋‹ค.
    • ex) Color c = new Color (255, 0, 0, 128); // c๋Š” ํˆฌ๋ช…๋„ 50%์˜ ๋นจ๊ฐ„์ƒ‰(128: 256์˜ ์ ˆ๋ฐ˜)

 

์ปดํฌ๋„ŒํŠธ ์ƒ‰์ƒ ๊ด€๋ จ ๋ฉ”์†Œ๋“œ

๋ฉ”์†Œ๋“œ ์„ค๋ช…
setBackground(Color c) ์ปดํฌ๋„ŒํŠธ ๊ฐ์ฒด์—์„œ ๋ฐฐ๊ฒฝ์ƒ‰์„ ์„ค์ •ํ•œ๋‹ค.
setColor(Color c) ์ „๊ฒฝ์ƒ‰์„ ์„ค์ •ํ•œ๋‹ค.
Color getColor()    // Color๊ฐ์ฒด ํ˜„์žฌ์˜ ์ „๊ฒฝ์ƒ‰์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

ํฐํŠธ

  • ๋ฌธ์ž์—ด ์ถœ๋ ฅ ๋ฐฉ๋ฒ•: (x, y) ์œ„์น˜์— ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅํ•˜๋ ค๋ฉด g.drawString("Hello World!", x, y);
  • ํฐํŠธ๋ฅผ ์ง€์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Font ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • Font ๊ฐ์ฒด → ํฐํŠธ ์ด๋ฆ„(Courier, Helvetica ๋“ฑ), ์Šคํƒ€์ผ(plain, bold, italic ๋“ฑ), ํฌ๊ธฐ(12ํฌ์ธํŠธ ๋“ฑ)์˜ 3๊ฐ€์ง€ ์†์„ฑ ์ง€์ •
    • Font font = new Font("Courier", Font.PLAIN, 10);    // ๊ธ€๊ผด, ์Šคํƒ€์ผ, ํฌ๊ธฐ

 

ํฐํŠธ์˜ ์ข…๋ฅ˜

๋…ผ๋ฆฌ์ ์ธ ํฐํŠธ ์„ค๋ช…
"Serif" ์‚์นจ(serif)๋ฅผ ๊ฐ–๋Š” ๊ฐ€๋ณ€ํญ ๊ธ€๊ผด, ๋Œ€ํ‘œ์ ์œผ๋กœ TimesRoman์ด ์žˆ๋‹ค.
"SansSerif" ์‚์นจ(serif)๋ฅผ ๊ฐ–์ง€์•Š๋Š” ๊ฐ€๋ณ€ํญ ๊ธ€๊ผด, ๋Œ€ํ‘œ์ ์œผ๋กœ Helvetica๊ฐ€ ์žˆ๋‹ค.
"Monospaced" ๊ณ ์ •ํญ์„ ๊ฐ€์ง€๋Š” ๊ธ€๊ผด, ๋Œ€ํ‘œ์ ์œผ๋กœ Courier๊ฐ€ ์žˆ๋‹ค.
"Dialog" ๋Œ€ํ™”์ƒ์ž์—์„œ ํ…์ŠคํŠธ ์ถœ๋ ฅ์„ ์œ„ํ•˜์—ฌ ์‚ฌ์šฉ๋˜๋Š” ๊ธ€๊ผด
"DialogInput" ๋Œ€ํ™”์ƒ์ž์—์„œ ํ…์ŠคํŠธ ์ž…๋ ฅ์„ ์œ„ํ•˜์—ฌ ์‚ฌ์šฉ๋˜๋Š” ๊ธ€๊ผด

 

ํฐํŠธ์˜ ์ง€์ •

public void paint(Graphics g){
	Font f = new Font("Serif", Font.BOLD | Font.ITALIC, 12);
    g.setFont(f);
    ...
}
JLabel myLabel = new JLabel("ํฐํŠธ ์ƒ‰์ƒ");
Font f = new Font("Dialog", Font.ITALIC, 10);
myLabel.setFont(f);		// ์ ์šฉํ•  ๋•Œ setter ์‚ฌ์šฉ

 

์ด๋ฏธ์ง€ ์ถœ๋ ฅ

BufferdImage img = null;	// BufferedImage: ์ด๋ฏธ์ง€ ์ˆ˜์ •ํ•  ๋•Œ ์šฉ์ดํ•œ ๊ธฐ๋Šฅ ์ œ๊ณต
try{
	img = ImageIO.read(new File("grape.jpg"));	// new File(): ํŒŒ์ผ ๊ฐ์ฒด๋กœ ๋งŒ๋“ค๊ธฐ
}												// ImageIO: ์ด๋ฏธ์ง€ ์ž…์ถœ๋ ฅ(Image Input Ouput)
catch(IOException e){
	...
}		// try, catch: ์˜ˆ์™ธ์ฒ˜๋ฆฌ

์ด๋ฏธ์ง€ ๊ทธ๋ฆฌ๊ธฐ

img = ImageIO.read(new File("grape.jpg"));

"grape.jpg" ์•ž์— ๊ฒฝ๋กœ ์ž‘์„ฑ

โ‘  ๊ฒฝ๋กœx → ์ตœ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ๋Š” ๊ฒฝ์šฐ

โ‘ก ํŒŒ์ผ ๊ฒฝ๋กœ  ๋””๋ ‰ํ† ๋ฆฌ ์•ˆ์— ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ๋„ฃ์—ˆ์„ ๊ฒฝ์šฐ ex) "image.grape.jpg" (image๋ผ๋Š” ํŒŒ์ผ)

โ‘ข ์ „์ฒด ๊ฒฝ๋กœ → ๋””๋ ‰ํ† ๋ฆฌ ์™ธ ๋‹ค๋ฅธ ํŒŒ์ผ์— ์žˆ์„ ๊ฒฝ์šฐ ์ „์ฒด ๊ฒฝ๋กœ ์ž‘์„ฑ ex) "C\~~"

 

์˜์ƒ ์ฒ˜๋ฆฌ

 

Java 2D

  • ๊ด‘๋ฒ”์œ„ํ•œ ๊ทธ๋ž˜ํ”ฝ ๊ฐ์ฒด๋ฅผ ๊ทธ๋ฆด ์ˆ˜ ์žˆ๋‹ค.
  • ๋„ํ˜•์˜ ๋‚ด๋ถ€๋ฅผ ๊ทธ๋ผ๋””์–ธํŠธ(gradient)๋‚˜ ๋ฌด๋Šฌ๋กœ ์ฑ„์šธ ์ˆ˜ ์žˆ๋‹ค.
  • ์ด๋ฏธ์ง€๋ฅผ ๊ทธ๋ฆด ์ˆ˜ ์žˆ๊ณ  ํ•„ํ„ฐ๋ง ์—ฐ์‚ฐ์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ทธ๋ž˜ํ”ฝ ๊ฐ์ฒด๋“ค์˜ ์ถฉ๋Œ์„ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•œ๋‹ค.

 

Java 2D๋ฅผ ์ด์šฉํ•œ ๊ทธ๋ฆฌ๊ธฐ

public void paintComponent(Graphics g) {
	Graphics2D g2 = (Graphics2D) g; 
	// Graphics ๊ฐ์ฒด๋ฅผ Graphics2D ๊ฐ์ฒด๋กœ ํ˜•๋ณ€ํ™˜
	g2.drawLine(100, 100, 300, 300);
	g2.drawRect(10, 10, 100, 100);
	...
}

 

์‚ฌ๊ฐํ˜• ๊ทธ๋ฆฌ๊ธฐ

  • Java 2D์—์„œ ๋„ํ˜• ๊ทธ๋ฆฌ๊ธฐ๋Š” Shape ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋”ฐ๋ฅธ๋‹ค.
  • ๋”ฐ๋ผ์„œ, Shape ํƒ€์ž…์˜ ์ฐธ์กฐ๋ณ€์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ ๋„ํ˜•์„ ์ƒ์„ฑํ•œ๋‹ค.
    • Shape r1 = new Rectangle2D.Float(7, 8, 100, 200);  // up-casting
    • g2.draw(r1); // Graphics2D ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•ด์„œ ์‚ฌ๊ฐํ˜• ๊ทธ๋ฆฌ๊ธฐ

 

MoreShape

 

animation

 


ํ•™์Šต๋‚ด์šฉ ์ดํ•ด๋„

85% ์ •๋„

 

ํ•™์Šตํ™œ๋™ ๋Œ์•„๋ณด๊ธฐ

๋‹ค์–‘ํ•œ ๊ทธ๋ž˜ํ”ฝ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์–ด์„œ ์ข‹์•˜๋‹ค. ํ•œ๋ฒˆ์— ๋งŽ์€ ๋‚ด์šฉ์„ ๋ฐฐ์›Œ ํ—ท๊ฐˆ๋ฆฌ๊ธฐ๋„ ํ•˜๋‹ค. ์—ฌ๋Ÿฌ๋ฒˆ ๋ณต์Šต ํ•ด์•ผ๊ฒ ๋‹ค. ๋ฌด์ž‘์ • ์™ธ์šด๊ธฐ๋ณด๋‹ค๋Š” ์–ด๋–ป๊ฒŒ ์‘์šฉํ•  ์ˆ˜ ์žˆ์„์ง€์— ์ดˆ์ ์„ ๋‘๊ณ  ๊ณต๋ถ€ํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ ๋‹ค. API ๋ฌธ์„œ๋„ ์ฐพ์•„๋ณด๋ฉฐ ๊ณต๋ถ€ํ•ด์•ผ๊ฒ ๋‹ค.

 

๋‹ค์Œ ํ•™์Šต๊ณ„ํš

์˜ˆ์™ธ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•๊ณผ ์Šค๋ ˆ๋“œ