¼Ò¼³°°ÀºÀÚ¹Ù3ºÎ  13Àå AWT  13.9.9 Canvas  

 

13.9.9 Canvas

 

Canvas´Â ÀϹÝÀûÀ¸·Î ±×¸²À» ±×¸®°Å³ª, ¸¶¿ì½º³ª Űº¸µåÀÇ ÀԷ¿¡ µû¶ó ±×¸²ÀÌ º¯ÇÏ°Ô ÇÒ ¶§ »ç¿ëÇÏ´Â ÄÄÆ÷³ÍÆ®ÀÔ´Ï´Ù. ¸¹Àº °æ¿ì Applet°ú °°ÀÌ ÇÏ¿© »ç¿ëµÇ´Â °æ¿ì°¡ ¸¹À¸¸ç ÇÁ·¹ÀÓ¿¡ ºÙ¿©¼­ »ç¿ëµÇ´Â ÄÄÆ÷³ÍÆ®ÀÔ´Ï´Ù. ¾Æ·¡ÀÇ ¿¹Á¦´Â ÇÁ·¹ÀÓ¿¡ ±×¸²À» ¿¬¼ÓÇØ¼­ Ãâ·ÂÇÏ´Â ¿¹Á¦ÀÔ´Ï´Ù. ¿¹Á¦¸¦ »ìÆìº» ÈÄ ¼³¸íÇϰڽÀ´Ï´Ù.

 

Canvas ¿¹Á¦

import java.awt.*;

import java.awt.event.*;

public class CanvasTest extends Frame {

   public CanvasTest()  {

       this.setTitle("CanvasTest");

       this.setSize(200, 200);

       add(new ImageCanvas());

   }

   public static void main(String[] args)  {

       Frame f = new CanvasTest();

       f.show();

   }

}

class ImageCanvas extends Canvas {

   private Image image = null;

   public ImageCanvas()  {

       image = Toolkit.getDefaultToolkit().getImage("print.gif");

       MediaTracker tracker = new MediaTracker(this);

       tracker.addImage(image, 0);

       try{

          tracker.waitForID(0);

       }catch(Exception e){}

       this.setSize(200,200);

   }

   public void paint(Graphics g)   {

       int imageWidth  = image.getWidth(this);

       int imageHeight = image.getHeight(this);                 

       g.drawImage(image, 0, 0, this);

       for(int i =0; i<50 ; i++)

          for(int j =0; j < 50;j++)

             if(i+j>0) {

             g.copyArea(0,0, imageWidth, imageHeight, i*imageWidth , j*imageHeight);

          }

   }

}

C:\javaclass\classes>java CanvasTest

 

 ÀÌ ¿¹Á¦¿¡¼­´Â ¸ÕÀú ÇÁ·¹ÀÓÀ» »ý¼ºÇÏ¿´½À´Ï´Ù.

 

n        Frame f = new CanvasTest();

 

 À§ÀÇ ±¸¹®¿¡¼­´Â CanvasTest Ŭ·¡½º°¡ FrameÀ» »ó¼ÓÇÏ¿´±â ¶§¹®¿¡ Upcasting ±â¹ýÀ¸·Î ÇÁ·¹ÀÓÀ» »ý¼ºÇÏ¿´½À´Ï´Ù. ÇÁ·¹ÀÓÀ» »ý¼ºÇÑ ÈÄ ImageCanvas¶ó´Â Canvas¸¦ »ó¼ÓÇÑ Å¬·¡½º¸¦ ¸¸µé¾ú½À´Ï´Ù. ÀÌ ImageCanvas Ŭ·¡½º¿¡ ±×¸² ó¸®ÇÏ´Â ÄÚµåµéÀÌ µé¾î ÀÖ½À´Ï´Ù. ImageCanvas Ŭ·¡½º¿¡¼­ ¸ÕÀú image °´Ã¼¸¦ ¾ò¾î¿É´Ï´Ù.

 

n        Image image = Toolkit.getDefaultToolkit().getImage("print.gif");

 

java.awt.ToolkitŬ·¡½ºÀÇ ¸â¹ö ¸Þ¼­µåÀÎ getDefaultToolkit()¿Í getImage(String filename)¸¦ ÀÌ¿ëÇÏ¿© image °´Ã¼¸¦ °¡Á®¿Ô½À´Ï´Ù. ÈÄ¿¡ java.awt.MediaTracker¸¦ »ç¿ëÇÏ¿´½À´Ï´Ù.

 

n        MediaTracker tracker = new MediaTracker(this);

n        tracker.addImage(image, 0);

n        try{

n            tracker.waitForID(0);

n        }catch(Exception e){}

 

 À§ÀÇ ±¸¹®À» »èÁ¦ÇÏ¿©µµ ÀÌ ¿¹Á¦´Â µ¹¾Æ°¡´Â µ¥ ¾Æ¹«·± ÁöÀåÀÌ ¾ø½À´Ï´Ù. ÇÏÁö¸¸, ¸¸¾à À̹ÌÁö°¡ ³×Æ®¿öÅ©·Î Àü¼Û µÇ¾îÁø´Ù°í °¡Á¤ÇÑ´Ù¸é, À̹ÌÁöÀÇ ·ÎµùÀÌ µÇ±âÀü¿¡ ÇÁ·Î±×·¥ÀÌ ½ÃÀÛÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÀÌ·² °æ¿ì ÇÁ·Î±×·¥¿¡¼­ ±×¸²À» ¿ÏÀüÈ÷ ·ÎµùµÇ´Â °ÍÀ» º¸ÀåÇϱâ À§ÇÏ¿© MediaTrackerŬ·¡½º¸¦ »ç¿ëÇÕ´Ï´Ù. MediaTrackerŬ·¡½º´Â À̹ÌÁö ÆÄÀÏ »Ó¸¸ ¾Æ´Ï¶ó ¿Àµð¿À ÆÄÀÏÀÇ °æ¿ì¿¡µµ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

 

Canvas¿¡ GraphicsÀÇ Å¬·¡½ºÀÇ copyArea(int x, int y, int width, int height, int dx, int dy) ¸Þ¼­µå¸¦ »ç¿ëÇÏ¿© °¢ ¼¿¿¡ ±×¸²À» ±×·È½À´Ï´Ù.

 

n         g.copyArea(0,0,imageWidth,imageHeight,i*imageWidth, j*imageHeight);

 

À§ÀÇ copyArea(int x, int y, int width, int height, int dx, int dy)¿¡ ´ëÇÏ¿© Àá±ñ ¼³¸í ÇϰڽÀ´Ï´Ù.

 

n         x : ºÐÇÒµÈ °¢°¢ÀÇ ¼¿¿¡¼­ ±×¸²ÀÌ ½ÃÀÛÇÒ x ÁÂÇ¥°ªÀ» ³ªÅ¸³¿

n         y : ºÐÇÒµÈ °¢°¢ÀÇ ¼¿¿¡¼­ ±×¸²ÀÌ ½ÃÀÛÇÒ y ÁÂÇ¥°ªÀ» ³ªÅ¸³¿

n         width : °¢ ¼¿ÀÇ °¡·ÎÀÇ ±æÀ̸¦ ³ªÅ¸³¿

n         height : °¢ ¼¿ÀÇ ¼¼·ÎÀÇ ±æÀ̸¦ ³ªÅ¸³¿

n         dx : ÁöÁ¤ÇÑ °Å¸®¸¸Å­ °¡·Î·Î ¶³¾î¶ß¸®°í ¼¿À» º¹»çÇÔ

n         dy : ÁöÁ¤ÇÑ °Å¸®¸¸Å­ ¼¼·Î·Î ¶³¾î¶ß¸®°í ¼¿À» º¹»çÇÔ

 

 ÀÌ·± ¹æ¹ýÀ¸·Î ImageCanvas Ŭ·¡½º¸¦ ¸¸µé°í ³ª¼­ ¸ÕÀú ¸¸µé¾îÁø ÇÁ·¹ÀÓ¿¡ ºÎÂøÇÕ´Ï´Ù.

 

n         add(new ImageCanvas());

 

 Á¾ÇÕÇØº¸¸é ÇÁ·¹ÀÓÀ» »ý¼ºÇÑ ´ÙÀ½ Canvas¸¦ ±¸ÇöÇϰí, ¸ÕÀú ¸¸µç ÇÁ·¹ÀÓ¿¡ Canvas¸¦ addÇØ¾ß ÇÕ´Ï´Ù.

 

 Canvas´Â ±×¸²À» ±×¸®°Å³ª ±×¸²À» º¯ÇÏ°Ô ÇÒ ¶§ ¾²´Â ÄÄÆ÷³ÍÆ®ÀÔ´Ï´Ù. °¡²ûÀº ±Û¾¾¸¦ ±×¸± ¶§µµ »ç¿ëÇÕ´Ï´Ù. CanvasÀÇ ¸â¹ö ¸Þ¼­µåÀÎ paint(Graphics g)°¡ GraphicsÀÇ °´Ã¼ g¸¦ »ý¼ºÇÏ¿© GraphicsÀÇ ¸Þ¼­µåµéÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×¸®°í Canvas´Â ÇÁ·¹ÀÓÀ̳ª Appletµî°ú °°ÀÌ »ç¿ëµÇ¾î¾ß ÇÑ´Ù´Â »ç½ÇÀº ¾Ë¾ÆµÎ¼Å¾ß ÇÕ´Ï´Ù.

 

Canvas ÁÖ¿ä ¸â¹ö ¸Þ¼­µå

addNotify () : ĵ¹ö½ºÀÇ ÇǾî(peer)¸¦ ÀÛ¼ºÇÕ´Ï´Ù.

paint (Graphics) : ÀÌ ¸Þ¼­µå´Â ĵ¹ö½º »ö»óÀ» ´Ù½Ã Ç¥½ÃÇϱâ À§ÇØ È£ÃâµË´Ï´Ù.



jabookÀúÀÚ¸íÇÔ
Á¦¸ñ:¼Ò¼³°°ÀºÀÚ¹Ù3ºÎ
ÀúÀÚ:ÃÖ¿µ°ü