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ºÎ ÀúÀÚ:ÃÖ¿µ°ü |