À̹ÌÁö´Â ¹Ì¸® ±×·ÁÁø ±×¸²ÀÌ´Ù. ¼º´Éº¸´Ù ¿¹»ÚÀåÇÑ ¿ÜÇüÀ» ´õ ¼±È£ÇÏ°í
Çϵå¿þ¾î ¼º´ÉÀÌ °³¼±µÇ¾î À̹ÌÁö·Î ¶±Ä¥À» Çصµ ºÎ´ãµÇÁö ¾Ê¾Æ À̹ÌÁö·Î ÇÁ·Î±×·¥À» Àå½ÄÇÏ´Â °æ¿ì°¡ ¸¹´Ù. GDI+°¡ GDI¿¡ ºñÇØ ¿ùµîÈ÷ ¿ì¼öÇÑ Á¡Àº ¾ÐÃà À̹ÌÁö¸¦ ´Ù·ê ¼ö ÀÖ´Ù´Â Á¡ÀÌ´Ù.
JPG, GIF, PNG, TIFF µî ¾ÐÃà È¿À²ÀÌ ³ô°í ´ëÁßÀûÀÎ Æ÷¸ËÀ» ÀÚÀ¯·Ó°Ô »ç¿ëÇÒ ¼ö ÀÖ´Ù.
À̹ÌÁö¸¦ Ç¥ÇöÇÏ´Â Image´Â Ãß»ó Ŭ·¡½º¿©¼ °´Ã¼¸¦ Á÷Á¢ »ý¼ºÇÒ
¼ö ¾ø´Ù. ´Ù¸¸ ´ëÇ¥ ŸÀÔÀ¸·Î¼ ÆÄ»ý Ŭ·¡½ºÀÎ BitmapÀ̳ª Metafile °´Ã¼¸¦ °¡¸®Å°±â¸¸ ÇÑ´Ù. Image °´Ã¼¸¦ »ý¼ºÇÒ
¶§´Â ´ÙÀ½ Á¤Àû ¸Þ¼µå Áß Çϳª¸¦ È£ÃâÇÑ´Ù.
public static Image FromFile (string filename)
public static Bitmap FromHbitmap (IntPtr hbitmap)
public static Image FromStream (Stream stream)
µð½ºÅ©ÀÇ À̹ÌÁö ÆÄÀϷκÎÅÍ, Win32 ºñÆ®¸ÊÀ¸·ÎºÎÅÍ, ½ºÆ®¸²À¸·ÎºÎÅÍ À̹ÌÁö °´Ã¼¸¦ »ý¼ºÇÑ´Ù. ÆÄÀÏ¿¡¼ ÀоîµéÀÌ´Â °ÍÀÌ
Á¦ÀÏ °£ÆíÇÏ´Ù. ´ÙÀ½ ¿¹Á¦´Â JPG ÆÄÀϷκÎÅÍ À̹ÌÁö °´Ã¼¸¦
»ý¼ºÇÏ¿© ȸéÀ¸·Î Ãâ·ÂÇÑ´Ù.
DrawImage |
using
System; ~ using System.Windows.Forms; namespace
DrawImage { public
partial class Form1 : Form { public
Form1() { InitializeComponent(); } private
void Form1_Paint(object sender, PaintEventArgs e) { Image
I = Image.FromFile("¾Æ±â.jpg"); e.Graphics.DrawImage(I,
0, 0); } } } |
FromFile ¸Þ¼µå·Î
"¾Æ±â.jpg" ÆÄÀÏÀ» Àоî À̹ÌÁö °´Ã¼¸¦ »ý¼ºÇÑ ÈÄ DrawImage ¸Þ¼µå·Î Ãâ·ÂÇß´Ù. "¾Æ±â.jpg" ÆÄÀÏÀÌ ½ÇÇà ÆÄÀÏ°ú °°Àº µð·ºÅ͸®¿¡ ¹Ýµå½Ã ÀÖ¾î¾ß ÇÑ´Ù.
ÆíÀÇ»ó Paint À̺¥Æ®¿¡¼ ÆÄÀÏÀ» Àоú´Âµ¥ À̹ÌÁö°°Àº °Å´ëÇÑ °´Ã¼´Â Load À̺¥Æ®¿¡¼ ¹Ì¸® ÀÐ¾î µÎ¾î¾ß ÇÑ´Ù. ÆÄÀϷκÎÅÍ À̹ÌÁö °´Ã¼¸¦
»ý¼ºÇÏ´Â µ¿ÀÛÀº ±²ÀåÈ÷ ´À·Á ¿¹ºñ µ¿ÀÛÀ» ÃëÇØ µÎ¾î¾ß Çϸç Paint´Â ¿À·ÎÁö Ãâ·Â¸¸ ÇÏ´Â °ÍÀÌ ¿øÄ¢ÀÌ´Ù. ¿¹Á¦¿¡¼ ÀÌ·¸°Ô ÇÏÀÚ¸é Çʵ带 ¼±¾ðÇØ¾ß ÇÏ°í Äڵ尡 Èð¾îÁ® ºÐ¼®Çϱ⠹ø°Å·Ó´Ù.
½Ç¹«¸¦ ÇÒ ¶§´Â È¿À²À» °í·ÁÇÏ¿© ¿øÄ¢´ë·Î ¹Ì¸® À̹ÌÁö¸¦ ÀÐ¾î ³õ¾Æ¾ß ÇÑ´Ù´Â °ÍÀ» ÀØÁö ¸»ÀÚ. ´ÙÀ½Àº Image Ŭ·¡½ºÀÇ ÇÁ·ÎÆÛƼÀÌ´Ù.
ÇÁ·ÎÆÛƼ |
ŸÀÔ |
¼³¸í |
Width |
int ¨Þ |
À̹ÌÁöÀÇ ÆøÀÌ´Ù. ´ÜÀ§´Â Çȼ¿ÀÌ´Ù. |
Height |
int ¨Þ |
À̹ÌÁöÀÇ ³ôÀÌÀÌ´Ù. |
Size |
Size ¨Þ |
À̹ÌÁöÀÇ Æø°ú ³ôÀÌÀÌ´Ù. |
Flags |
int ¨Þ |
À̹ÌÁöÀÇ Çȼ¿ Ư¼ºÀ» Á¶»çÇÑ´Ù. °¢ ¼ºÁúÀº ºñÆ® Á¶ÇÕÀ¸·Î Ç¥ÇöµÇ´Âµ¥ È®´ë °¡´ÉÇÑÁö, ¾ËÆÄ Ã¤³ÎÀÌ ÀÖ´ÂÁö, Àбâ Àü¿ëÀÎÁö µîÀÇ Á¤º¸°¡ ÀÖ´Ù. |
HorizontalResolution |
float ¨Þ |
¼öÆò ÇØ»óµµÀÌ´Ù. ÀÎÄ¡´ç Çȼ¿¼ö·Î Ç¥ÇöÇÑ´Ù. |
VerticalResolution |
float ¨Þ |
¼öÁ÷ ÇØ»óµµÀÌ´Ù. ÀÎÄ¡´ç Çȼ¿¼ö·Î Ç¥ÇöÇÑ´Ù. |
Palette |
ColorPalette |
À̹ÌÁöÀÇ »ö»óÇ¥ÀÌ´Ù. |
PixelFormat |
PixelFormat ¨Þ |
À̹ÌÁöÀÇ Çȼ¿ Çü½ÄÀ» Á¶»çÇÑ´Ù. PixelFormat ¿°ÅÇüÀ¸·Î Ç¥ÇöÇϸç Á¡À»
±¸¼ºÇÏ´Â ºñÆ® ±¸Á¶¸¦ Á¶»çÇÑ´Ù. ½±°Ô ¸»ÇØ Èæ¹éÀÎÁö 16ºñÆ®
»ö»óÀ» ¾²´ÂÁö, Æ®·çÄ÷¯ À̹ÌÁöÀÎÁö µîÀÇ Á¤º¸ÀÌ´Ù. |
PropertyList |
int[]¨Þ |
À̹ÌÁö¿¡ ÀúÀåµÈ ¼Ó¼ºÀÇ ID ¸ñ·ÏÀ» Á¶»çÇÑ´Ù.
Á¦ÀÛÀÚ, »ý¼º Àåºñ, ³¯Â¥ µîÀÇ ´Ù¾çÇÑ ¼Ó¼º
Á¤º¸°¡ ÀúÀåµÇ¾î ÀÖ´Ù. |
PropertyItem |
PropertyItem[] ¨Þ |
À̹ÌÁö¿¡ ÀúÀåµÈ ¼Ó¼ºÀÇ ¸ÞŸ µ¥ÀÌÅÍ ¸ñ·ÏÀ» Á¶»çÇÑ´Ù. |
RawFormat |
ImageFormat ¨Þ |
À̹ÌÁöÀÇ Æ÷¸ËÀ» Á¶»çÇÑ´Ù. ImageFormat Ŭ·¡½º·Î Ç¥ÇöµÇ¸ç BMP, JPG, GIF µîÀÇ À̹ÌÁö Æ÷¸ËÀ» Ç¥ÇöÇÑ´Ù. |
À̹ÌÁöÀÇ Å©±â³ª »ö»ó¼ö, ÇØ»óµµ °°Àº ¼ºÁúÀ» Á¶»çÇÑ´Ù. ÀÌ Áß À̹ÌÁö Å©±âÀÎ Width, Height°¡ ÀÚÁÖ »ç¿ëµÈ´Ù. À̹ÌÁöÀÇ °íÀ¯ÇÑ Æ¯¼ºÀÌ¾î¼ ´ëºÎºÐ Àбâ Àü¿ëÀÌ´Ù.
À̹ÌÁö¸¦ Ãâ·ÂÇÏ´Â DrawImage ¸Þ¼µå´Â ¹«·Á 30°³ÀÇ ¹öÀüÀ¸·Î ¿À¹ö·ÎµåµÇ¾î ÀÖ´Ù. ±× Áß Àý¹ÝÀÌ ½Ç¼öÇü ¹öÀüÀε¥ 50% ¼¼ÀÏÇصµ 15°³³ª µÈ´Ù. °£´ÜÇÑ
°ÍºÎÅÍ ¼ø¼´ë·Î ±¸°æÇØ º¸ÀÚ.
public void DrawImage (Image image,Point point)
public void DrawImage (Image image,int x,int y)
ù ¹ø° Àμö´Â Ç×»ó Ãâ·Â ´ë»ó À̹ÌÁöÀÎ Image °´Ã¼ÀÌ´Ù. µÎ ¹ø° ÀμöºÎÅÍ Ãâ·Â ÁÂÇ¥³ª ¿µ¿ª, Ãâ·Â ¹æ¹ýÀ» ÁöÁ¤Çϴµ¥ Àμö
Á¾·ù¿¡ µû¶ó ±â´É»óÀÇ Â÷ÀÌ°¡ ¹ß»ýÇÑ´Ù. Point¸¦ ÃëÇÏ´Â °Í°ú
(x, y) ÁÂÇ¥¸¦ ÃëÇÏ´Â ¸Þ¼µå´Â µ¿ÀÏÇϹǷΠ´ÙÀ½ µÎ È£Ãâ¹®Àº °°´Ù.
e.Graphics.DrawImage(I, 0, 0);
e.Graphics.DrawImage(I, new Point(0, 0));
ÁÂÇ¥¸¸ ÁöÁ¤ÇϹǷΠũ±â´Â ¿øº» ±×´ë·ÎÀ̸ç È®ÀåÀ̳ª Ãà¼Ò´Â ¾ø´Ù. ÁöÁ¤ÇÑ
ÁÂÇ¥¿¡ À̹ÌÁö Àüü°¡ ¿ø·¡ Å©±â´ë·Î Ãâ·ÂµÈ´Ù. ¹Ý¸é ´ÙÀ½ µÎ ¸Þ¼µå´Â Ãâ·Â ¿µ¿ªÀ» ÁöÁ¤ÇÏ¿© È®Àå, Ãà¼Ò°¡ ¹ß»ýÇÑ´Ù.
public void DrawImage (Image image,Rectangle
rect)
public void DrawImage (Image image,int x,int
y,int width,int height)
Rectangle °´Ã¼³ª Á¤¼öÇüÀÇ
XYWH·Î Ãâ·Â ¿µ¿ªÀ» ÁöÁ¤ÇÑ´Ù. ¿øº»º¸´Ù ´õ Å« ¿µ¿ª¿¡ Ãâ·ÂÇϸé È®´ëÀÌ°í ´õ Á¼Àº ¿µ¿ª¿¡
Ãâ·ÂÇϸé Ãà¼ÒÀÌ´Ù. ´ÙÀ½ µÎ È£Ãâ¹®Àº À̹ÌÁö¸¦ ÀÛ°Ô Ãà¼ÒÇÏ¿© Ãâ·ÂÇÑ´Ù.
e.Graphics.DrawImage(I, new Rectangle(0, 0, 300,
250));
e.Graphics.DrawImage(I, 0, 0, 300, 250);
600*500 Å©±âÀÇ ¿øº» À̹ÌÁö¸¦
300*250ÀÇ ¿µ¿ª¿¡ Ãâ·ÂÇßÀ¸¹Ç·Î Æø°ú ³ôÀÌ´Â Àý¹ÝÀ¸·Î Ãà¼ÒµÈ´Ù. ½ÇÇà °á°ú´Â ´ÙÀ½ ù
¹ø° ±×¸²°ú °°´Ù.
À̹ÌÁö Æø°ú Ãâ·ÂÆøÀÌ 2¹è Â÷À̳ª¸ç ³ôÀ̵µ °°Àº ºñÀ²·Î Ãà¼ÒÇÏ¿© Á¾È¾ºñ´Â
À¯ÁöÇß´Ù. ºñÀ²À» ¸ÂÃßÁö ¾Ê°í ÀÓÀÇÀÇ »ç°¢¿µ¿ª¿¡ Ãâ·ÂÇϸé À̹ÌÁö°¡ ±æÂßÇϰųª Â¥¸®¸ù¶¥ÇÏ°Ô Ãâ·ÂµÈ´Ù. À§ ±×¸²ÀÇ µÎ ¹ø°, ¼¼ ¹ø°´Â ´ÙÀ½ ÄÚµå·Î Ãâ·ÂÇÑ °ÍÀÌ´Ù.
e.Graphics.DrawImage(I, 0, 0, 150, 250);
e.Graphics.DrawImage(I, 0, 0, 300, 125);
±×¸²ÀÌ Âî±×·¯Á® º¸±â¿¡ ÁÁÁö ¾Ê´Ù. ÇÊ¿ä¿¡ µû¶ó È®´ë³ª Ãà¼ÒÇÏ´õ¶óµµ
°¡±ÞÀû Á¾È¾ºñ´Â À¯ÁöÇÏ´Â °ÍÀÌ ÁÁ´Ù. ÆíÀÇ»ó 300, 250 »ó¼ö¸¦
»ç¿ëÇßÁö¸¸ Width, Height ÇÁ·ÎÆÛƼÀÇ ºñÀ²·Î Ç¥±âÇÏ´Â °ÍÀÌ ÁÁ´Ù. ¿¹¸¦ µé¾î I À̹ÌÁö¸¦ Àý¹ÝÀ¸·Î Ãà¼ÒÇÏ·Á¸é Ãâ·Â »ç°¢¿µ¿ªÀÇ Å©±â¸¦ I.Width/2, I.Height/2·Î ÁöÁ¤ÇÏ¸é µÈ´Ù. °öÇÏ¸é ¹°·Ð
È®´ëµÈ´Ù.
RectangleÀ» ÃëÇÏ´Â ¸Þ¼µå´Â È®´ë, Ãà¼ÒÇÏÁö¸¸ ¾î·µç À̹ÌÁö Àüü¸¦ ´Ù Ãâ·ÂÇÑ´Ù. ¹Ý¸é ´ÙÀ½ ¸Þ¼µå´Â
À̹ÌÁöÀÇ ÀϺκи¸ Ãâ·ÂÇÑ´Ù. srcRect´Â À̹ÌÁöÀÇ ¾î¶² ºÎºÐÀ» Ãâ·ÂÇÒ °ÍÀΰ¡¸¦ ÁöÁ¤ÇÑ´Ù. srcUnitÀº Ãâ·Â¿¡ »ç¿ëÇÒ ´ÜÀ§ÀÌ´Ù.
public void DrawImage (Image image,int x,int
y,Rectangle srcRect,GraphicsUnit srcUnit)
´ÙÀ½ È£Ãâ¹®Àº ¿ÞÂÊÀÇ ¾Æ±â¸¸ Ãâ·ÂÇÑ´Ù.
e.Graphics.DrawImage(I, 10, 10, new Rectangle(70,
50, 250, 380), GraphicsUnit.Pixel);
À̹ÌÁöÀÇ (70,50) À§Ä¡¿¡¼ ½ÃÀÛÇÏ¿© Æø 250, ³ôÀÌ 380 ¸¸ÅÀ» ȸéÀÇ
(10, 10) ÁÂÇ¥¿¡ Ãâ·ÂÇß´Ù. ¿øº» À̹ÌÁö¿¡ ´ëÇØ Ãâ·Â ¿µ¿ªÀ» ÁöÁ¤ÇÒ ¼ö ÀÖÁö¸¸ ȸ鿡
´ëÇؼ´Â ÁÂÇ¥¸¸ ÁöÁ¤ÇϹǷΠȮ´ë, Ãà¼Ò´Â ÇÒ ¼ö ¾ø´Ù.
´ÙÀ½ ¸Þ¼µå´Â Àμö°¡ ´õ ¸¹Àºµ¥ Rectangle °´Ã¼¿Í XYWH Á¤¼ö ³× °³¸¦ ¹Þ´Â´Ù. Ãâ·Â ¿µ¿ª°ú À̹ÌÁöÀÇ ¿µ¿ªÀ» °°ÀÌ
ÁöÁ¤ÇÒ ¼ö ÀÖ¾î À̹ÌÁöÀÇ Æ¯Á¤ ºÎºÐ¸¸ ¿øÇÏ´Â Å©±â·Î Ãâ·ÂÇÒ ¼ö ÀÖ´Ù.
public void DrawImage (Image image,Rectangle
destRect,int srcX,int srcY,int srcWidth,int srcHeight,GraphicsUnit srcUnit)
´ÙÀ½ È£Ãâ¹®Àº ¿ÞÂÊ ¾Æ±â¸¸ Á¶±×¸Ä°Ô Ãà¼ÒÇؼ Ãâ·ÂÇÑ´Ù.
e.Graphics.DrawImage(I, new
Rectangle(10,10,200,200), 70, 50, 250, 380, GraphicsUnit.Pixel);
¿øº» À̹ÌÁöÀÇ (70, 50) À§Ä¡¿¡¼ Æø 250, ³ôÀÌ 380¸¸ÅÀ» ȸéÀÇ
(10, 10) ÁÂÇ¥¿¡ Æø 200, ³ôÀÌ 200À¸·Î
Ãâ·ÂÇß´Ù. ºñÀ²À̳ª Á¾È¾ºñ±îÁö ¸¶À½´ë·Î ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.
¿©±â±îÁö »ìÆ캻 DrawImage ¸Þ¼µå¸¦ Á¤¸®ÇØ º¸¸é ÃëÇÏ´Â ÀμöÀÇ
Á¾·ù¿¡ µû¶ó Ãâ·Â ±â´ÉÀÇ ·¹º§ÀÌ ´Þ¶óÁüÀ» ¾Ë ¼ö ÀÖ´Ù. »ó¼¼ÇÑ Á¤º¸¸¦ Àü´ÞÇϸé Ãâ·Â Çüŵµ ´Ù¾çÇØÁø´Ù.
Àμö |
±â´É |
Point(¶Ç´Â X, Y) |
À̹ÌÁö Àüü¸¦ ±×´ë·Î Ãâ·ÂÇÑ´Ù. |
Rectangle(¶Ç´Â XYWH) |
À̹ÌÁö Àüü¸¦ È®´ë, Ãà¼ÒÇÏ¿© Ãâ·ÂÇÑ´Ù. |
Point, Rectangle |
À̹ÌÁöÀÇ ÀϺθ¦ ±×´ë·Î Ãâ·ÂÇÑ´Ù. |
Rectangle, Rectangle |
À̹ÌÁöÀÇ ÀϺθ¦ È®´ë, Ãà¼ÒÇÏ¿© Ãâ·ÂÇÑ´Ù. |
Rectangle µÎ °³¸¦ ¹Þ´Â
DrawImage ¸Þ¼µå´Â ¾ÕÂÊÀÇ ¸ðµç ¸Þ¼µå¸¦ Æ÷ÇÔÇÏ´Â ¼ÀÀÌ´Ù. ÇÏÁö¸¸ Àμö°¡ ¸¹À¸¸é
¹ø°Å·Î¿ö ²À ÇÊ¿äÇÑ Àμö¸¸ ¹Þ´Â ¹öÀüÀÌ ¿À¹ö·ÎµåµÇ¾î ÀÖ´Ù. °¡Àå ÀÚÁÖ »ç¿ëÇÏ´Â ¹öÀüÀº Point¸¦ ÃëÇÏ´Â ´Ü¼øÇÑ ¹öÀüÀÌ´Ù. ´ÙÀ½Àº Á¶±Ý ƯÀÌÇÑ Ãâ·Â ¸Þ¼µå¿¡
´ëÇØ ¾Ë¾Æº¸ÀÚ. ½Ç¿ë¼ºÀÌ ¶³¾îÁöÁö¸¸ ÇÑ ¹øÂë ±¸°æÇØ º¼¸¸Å Àç¹Ì´Â ÀÖ´Ù. ´ÙÀ½ ¸Þ¼µå´Â ÆòÇà »çº¯Çü¿¡ À̹ÌÁö¸¦ Âî±×·¯¶ß·Á Ãâ·ÂÇÑ´Ù.
public void DrawImage (Image image, Point[]
destPoints, Rectangle srcRect, GraphicsUnit srcUnit)
Å©±â 3ÀÇ Point ¹è¿·Î
ÆòÇà »çº¯ÇüÀ» Á¤ÀÇÇÏ¿© Ãâ·Â ¿µ¿ªÀ» ÁöÁ¤ÇÏ°í srcRect Àμö·Î À̹ÌÁöÀÇ ¿øº» ¿µ¿ªÀ» ÁöÁ¤ÇÑ´Ù. ÆòÇà »çº¯ÇüÀº Á»ó´Ü, ¿ì»ó´Ü, ÁÂÇÏ´Ü
²ÀÁöÁ¡ ¼¼ °³ÀÇ ÁÂÇ¥·Î Á¤ÀÇÇϴµ¥ ¸¶ÁÖº¸´Â º¯ÀÌ ÆòÇàÇÏ´Ù´Â Á¶°Ç¿¡ ÀÇÇØ ¿ìÇÏ´Ü ÁÂÇ¥´Â ÀÚµ¿ °áÁ¤µÈ´Ù. ´ÙÀ½
ÄÚµå´Â ¿ÞÂÊ ¾Æ±â ¾ó±¼À» ¿À¸¥ÂÊÀ¸·Î ¾à°£ ±â¿ï¾îÁø ÆòÇà »çº¯Çü¿¡ ³¢¿ö ¸ÂÃá´Ù.
Rectangle R = new Rectangle(70, 50, 250, 380);
Point[] pts = { new Point(0, 0), new Point(200,
0), new Point(100, 300) };
e.Graphics.DrawImage(I, pts, R,
GraphicsUnit.Pixel);
À̹ÌÁö¸¦ ȸÀü½ÃÅ°°Å³ª Á¤À°¸éüÀÇ °¢ ¸é¿¡ Ãâ·ÂÇÏ¿© ÀÔüÀûÀÎ È¿°ú¸¦ ³»°í ½ÍÀ» ¶§ ÇÑ ¹øÂë ½á º¼¸¸ Çѵ¥ ±× Á¤µµ
È¿°ú¸¦ ¹Ù¶õ´Ù¸é GDI+º¸´Ù´Â 3D ±×·¡ÇÈ ¶óÀ̺귯¸®¸¦ È°¿ëÇÏ´Â
°ÍÀÌ ÀûÇÕÇÏ°í ´Ù¾çÇÑ ±â±³¸¦ ºÎ¸± ¼ö ÀÖ´Ù. GDI+´Â ¾î·°Å³ª 2D
±×·¡ÇÈ ¶óÀ̺귯¸®ÀÌ´Ù.
¸¶Áö¸·À¸·Î °¡Àå Àμö°¡ ¸¹Àº, Áï °¡Àå ±â´ÉÀÌ ¸¹Àº ¸Þ¼µå¸¦ ±¸°æÇØ
º¸ÀÚ. Àμö°¡ 11°³³ª µÇ´Âµ¥ RectangleÀÇ °¢ Çʵ带 ºÐÇØÇϸé ÃÑ 15°³ÀÇ Àμö°¡ Àü´ÞµÇ´Â
¼ÀÀÌ´Ù.
public void DrawImage (Image image, Rectangle
destRect, int srcX, int srcY, int srcWidth, int srcHeight, GraphicsUnit
srcUnit, ImageAttributes imageAttrs, DrawImageAbort callback, IntPtr
callbackData)
À̹ÌÁöÀÇ Æ¯Á¤ ºÎºÐ¸¸ ȸéÀÇ ÁöÁ¤ÇÑ ¿µ¿ª¿¡ È®´ë, Ãà¼ÒÇؼ Ãâ·ÂÇÒ
¼ö ÀÖÀ½Àº ¹°·ÐÀÌ°í ´ÜÀ§¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ°í Ãâ·ÂÁß¿¡ º¯È¯ÇÒ ¼öµµ ÀÖ´Ù. ¶ÇÇÑ Ãâ·Â °úÁ¤¿¡ È£ÃâµÉ Äݹé
¸Þ¼µå¸¦ ÅëÇØ ¾îµð±îÁö Ãâ·ÂµÇ¾ú´ÂÁö °¨½ÃÇϰųª Áß°£¿¡ Ãë¼ÒÇÒ ¼öµµ ÀÖ´Ù. ±â´ÉÀûÀ¸·Î °¡Àå ¿Ïº®ÇÏÁö¸¸
±×¸¸Å È°¿ëÇϱâ´Â ±î´Ù·Ó´Ù.
¾ÆÁÖ Å« À̹ÌÁö´Â Ãâ·Â ½Ã°£ÀÌ ¿À·¡ °É¸®´Âµ¥ °¡¸¸È÷ ¸ØÃç ÀÖ´Â °Íº¸´Ù Ãâ·Â ÁøÇà °úÁ¤À» º¸¿©ÁÖ´Â °ÍÀÌ ÁÁ´Ù. ¶ÇÇÑ À̹ÌÁö¸¦ ±×¸®´Â Áß¿¡ »ç¿ëÀÚ°¡ ´ÙÀ½ À̹ÌÁö·Î À̵¿ÇØ ¹ö¸± ¼ö ÀÖ¾î Áß°£¿¡ Ãë¼ÒÇÒ ¼öµµ ÀÖ¾î¾ß ÇÑ´Ù. Àü¹® ±×·¡ÇÈ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÑ´Ù¸é ÄÝ¹é ¸Þ¼µåµµ ÇʼöÀûÀÌ´Ù.
BitmapÀº ºñÆ®¸Ê ±× ÀÚü¸¦ Ç¥ÇöÇÏ¸ç ·¡½ºÅÍ µ¥ÀÌÅ͸¦ °ü¸®ÇÑ´Ù. Image´Â Á¸ÀçÇÏ´Â À̹ÌÁö¸¸ Ãâ·ÂÇÏ´Â ÀϹÝÀûÀΠŬ·¡½ºÀε¥ ºñÇØ BitmapÀº
À̹ÌÁö¸¦ »ý¼ºÇϰųª Á¶ÀÛÇÒ ¼ö ÀÖ´Ù´Â Á¡¿¡¼ ±â´ÉÀÌ ´õ ¸¹´Ù.
public Bitmap (Image original)
public Bitmap (Stream stream)
public Bitmap (string filename)
public Bitmap (int width,int height [,PixelFormat
format])
À̹ÌÁö °´Ã¼³ª ½ºÆ®¸², ÆÄÀϷκÎÅÍ »ý¼ºÇϰųª Å©±â¿Í Æ÷¸ËÀ» ÁöÁ¤ÇÏ¿©
Á÷Á¢ »ý¼ºÇÑ´Ù. Æø°ú ³ôÀ̸¸ ÁöÁ¤Çϸé 32ºñÆ® »ö»óÀÇ ºñÆ®¸Ê
°´Ã¼°¡ »ý¼ºµÇ¸ç »ö»ó Æ÷¸ËÀ» Á÷Á¢ ÁöÁ¤ÇÒ ¼öµµ ÀÖ´Ù. ÀÌ·¸°Ô ¸¸µç À̹ÌÁö´Â ´Ù¾çÇÑ ¸ñÀû¿¡ »ç¿ëµÇ´Âµ¥
ÁÖ·Î ¸Þ¸ð¸® »óÀÇ ÀÓ½ÃÀûÀÎ Ãâ·Â Ç¥¸éÀ¸·Î »ç¿ëµÈ´Ù.
ȸéÀ¸·Î Ãâ·ÂÀ» ³» º¸³»µí ºñÆ®¸Ê Ç¥¸éÀ¸·Î Ãâ·ÂÀ» ³» º¸³»´Âµ¥ ÀÌ·± ¸ñÀûÀ¸·Î »ç¿ëÇÏ´Â ºñÆ®¸ÊÀ» ¿ÀÇÁ ½ºÅ©¸° ºñÆ®¸Ê
¶Ç´Â °¡»ó ȸéÀ̶ó°í ÇÑ´Ù. °¡»ó ȸéÀ¸·Î Ãâ·ÂÇÏ·Á¸é ¸ÕÀú
Graphics Ŭ·¡½ºÀÇ ´ÙÀ½ Á¤Àû ¸Þ¼µå·Î ºñÆ®¸ÊÀ» Ãâ·Â Ç¥¸éÀ¸·Î ÇÏ´Â Graphics °´Ã¼¸¦
¾ò´Â´Ù.
public static Graphics FromImage (Image image)
¸®ÅϵǴ Graphics °´Ã¼¸¦ ÅëÇØ ¸ðµç Ãâ·Â ¸Þ¼µå¸¦ ÀÚÀ¯ ÀÚÀç·Î
È£ÃâÇÒ ¼ö ÀÖÀ¸¸ç ¸ðµç Ãâ·ÂÀº ȸéÀÌ ¾Æ´Ñ ºñÆ®¸Ê¿¡ ±×·ÁÁø´Ù. ºñÆ®¸ÊÀÌ ºñµð¿À ·¥ ¿ªÇÒÀ» ÇÏ¸ç ºü¸¥
¼Óµµ·Î ȸéÀ¸·Î Àü¼ÛÇÑ´Ù. ÀÌ ±â¹ýÀ» È°¿ëÇÏ¸é ¹é±×¶ó¿îµå¿¡¼ ±×¸²À» ¹Ì¸® ÁغñÇÑ ÈÄ °á°ú¸¸ Ãâ·ÂÇÒ ¼ö
ÀÖ´Ù.
BackgroundImage |
using
System; ~ using System.Windows.Forms; namespace
BackgroundImage { public
partial class Form1 : Form { private
Bitmap B = new Bitmap(600, 400); public
Form1() { InitializeComponent(); } private
void Form1_Paint(object sender, PaintEventArgs e) { e.Graphics.DrawImage(B,
0, 0); } private
void Form1_MouseClick(object sender, MouseEventArgs e) { if
(e.Button == MouseButtons.Left) { Graphics
G = Graphics.FromImage(B); G.Clear(BackColor); Random
R = new Random(); for
(int i = 0; i < 500; i++) { SolidBrush
Br = new SolidBrush(Color.FromArgb(R.Next(256), R.Next(256),
R.Next(256), R.Next(256))); G.FillEllipse(Br,
R.Next(600), R.Next(400), R.Next(70) + 30, R.Next(70)
+ 30); } Invalidate(); } } } } |
Form1ÀÇ ¸â¹ö·Î Bitmap ŸÀÔÀÇ
Çʵå B¸¦ ¼±¾ðÇÏ°í Æø 600, ³ôÀÌ 400ÀÇ Å©±â·Î »ý¼ºÇß´Ù. ºñÆ®¸Ê Ç¥¸é¿¡´Â ¾Æ¹«°Íµµ ±×·ÁÁ® ÀÖÁö ¾ÊÀ¸¸ç
¸ðµç Çȼ¿ÀÌ Åõ¸í»öÀ¸·Î ÃʱâȵȴÙ. ¸¶¿ì½º ¿ÞÂÊ ¹öÆ°À» ´©¸£¸é ºñÆ®¸Ê Ç¥¸é¿¡ 500°³ÀÇ Å¸¿øÀ» ¸¶±¸ ±×¸°´Ù. »ö»ó, Å©±â, À§Ä¡ µîÀ» ³¼ö·Î ¼±ÅÃÇßÀ¸¸ç ¼Óµµ¸¦ ´À¸®°Ô Çϱâ À§ÇØ ¹ÝÅõ¸íÇÑ
»ö»óÀ» »ç¿ëÇß´Ù.
FromImage(B) È£Ãâ¿¡ ÀÇÇØ
B ºñÆ®¸ÊÀ» Ãâ·Â Ç¥¸éÀ¸·Î °¡Áö´Â Graphics °´Ã¼
G°¡ »ý¼ºµÇ¸ç ÀÌÈÄ GÀÇ ¸Þ¼µå´Â BÀÇ Ç¥¸é¿¡
Ãâ·ÂÇÑ´Ù. B´Â ¸Þ¸ð¸®»ó¿¡ Àִ ǥ¸éÀÏ »ÓÀ̹ǷΠŸ¿øÀ» ±×¸®´Â °úÁ¤Àº º¸ÀÌÁö ¾Ê´Â´Ù. ¿Ï¼ºµÈ ±×¸²Àº Paint À̺¥Æ®¿¡¼ ȸéÀ¸·Î °í¼Ó Àü¼ÛµÇ¸ç »ç¿ëÀÚ´Â
ÃÖÁ¾ ¿Ï¼ºµÈ ±×¸²¸¸ º¸°Ô µÈ´Ù. ¸¶¿ì½º ¹öÆ°À» ´©¸¦ ¶§¸¶´Ù Ÿ¿øÀÇ ¸ð¾çÀÌ ¹Ù²ï´Ù.
ÀÌ Ãâ·ÂÀ» Paint À̺¥Æ®¿¡¼ Á÷Á¢ ÇÏ¸é µÎ °¡Áö ¸é¿¡¼ ºÒÀÌÀÍÀÌ
»ý±ä´Ù. È®ÀÎÇØ º¸±â À§ÇØ Paint À̺¥Æ®¿¡¼ Á÷Á¢ ±×·Á
º¸ÀÚ. ÄÚµå´Â °°µÇ ±×¸®´Â ´ë»óÀÌ e.Graphics¶ó´Â
Á¡ÀÌ ´Ù¸£´Ù.
private void Form1_Paint(object sender,
PaintEventArgs e) {
e.Graphics.Clear(BackColor);
Random
R = new Random();
for
(int i = 0; i < 500; i++) {
SolidBrush
Br = new SolidBrush(Color.FromArgb(R.Next(256),
R.Next(256),
R.Next(256), R.Next(256)));
e.Graphics.FillEllipse(Br,
R.Next(600), R.Next(400), R.Next(70) + 30,
R.Next(70)
+ 30);
}
}
ù ¹ø° ¹®Á¦´Â ±×¸²À» ±×¸®´Â Áß°£ °úÁ¤ÀÌ Àû³ª¶óÇÏ°Ô º¸Àδٴ Á¡ÀÌ´Ù. ½Ã°£ÀÌ
¿À·¡ °É¸®´Â °ÍÀº ÇÒ ¼ö ¾øÁö¸¸ Áß°£ °úÁ¤À» º¸ÀÌ´Â °ÍÀº ±×¸® ±ò²ûÇÑ ¸ð½ÀÀÌ ¾Æ´Ï´Ù. ±ô¹ÚÀÓµµ ½ÉÇϸç
»ç¿ëÀÚ´Â ±â´Ù¸°´Ù´Â ´À³¦À» ¹Þ´Â´Ù. »ÐÇÏ°í ÇÑ ¹ø¿¡ ³ªÅ¸³ª´Â °ÍÀ» ´õ ÁÁ¾ÆÇÏ¸ç ¹é±×¶ó¿îµå¿¡¼ ÀÌ ÀÛ¾÷À»
¹Ì¸® ÇØ ³õÀ¸¸é ´õ ºü¸£°Ô Ãâ·ÂÇÒ ¼ö ÀÖ´Ù.
µÎ ¹ø° ºÒÀÌÀÍÀº ÀÌ¹Ì ¿Ï¼ºÇÑ ±×¸²À» Paint À̺¥Æ®¸¦ ¹ÞÀ» ¶§¸¶´Ù
´Ù½Ã ±×·Á¾ß ÇÑ´Ù´Â Á¡ÀÌ´Ù. ¾Æ¹«¸® º¹ÀâÇÑ ±×¸²ÀÌ¶óµµ ¸Þ¸ð¸®»óÀÇ ºñÆ®¸Ê¿¡ ¹Ì¸® ÁغñÇØ µÎ¾ú´Ù¸é ´Ù½Ã
±×¸± ¶§ ¿Ï¼ºµÈ ±×¸²¸¸ Àü¼ÛÇϸé ÈξÀ ´õ ºü¸£°Ô ±×¸± ¼ö ÀÖ´Ù.
À§ Äڵ带 ½ÇÇàÇϸé Ÿ¿øÀÌ ¸¶±¸ ±×·ÁÁ® ÁöÀúºÐÇØ º¸ÀÌ¸ç ´Ù¸¥ À©µµ¿ì¿¡ ÀÇÇØ ¾ðÄ¿¹öµÉ ¶§¸¶´Ù ÀÌ °úÁ¤ÀÌ ¹Ýº¹µÇ¹Ç·Î
´À¸®´Ù. °Ô´Ù°¡ ÀÌ ¿¹Á¦´Â ³¼ö¸¦ »ç¿ëÇÏ°í ÀÖ¾î ±×¸± ¶§¸¶´Ù ´Þ¶óÁø´Ù´Â ¹®Á¦±îÁö ÀÖ´Ù. Áöµµ³ª 3D ±×·¡ÇÈó·³ ¿¬»êÀÌ º¹ÀâÇÑ ÇÁ·Î±×·¥Àº ¸Þ¸ð¸® ºñÆ®¸Ê¿¡
ÇÑ ¹ø¸¸ ±×·Á µÎ°í ´Ù½Ã ±×¸± ¶§´Â °í¼Ó Àü¼ÛÇÏ´Â ¹æ¹ýÀ» »ç¿ëÇÑ´Ù.
¾Õ Ç׿¡¼ ¾Ë¾Æº» ¹é±×¶ó¿îµå À̹ÌÁö 󸮸¦ ºü¸¥ ¼Óµµ·Î ¹Ýº¹ÇÏ´Â ±â¹ýÀ» ´õºí ¹öÆÛ¸µÀ̶ó°í Çϴµ¥ ±ô¹ÚÀÓÀ» Á¦°ÅÇÏ´Â
±âº»ÀûÀÌ°íµµ ±Ã±ØÀûÀÎ ±â¼úÀÌ´Ù. ´õºí ¹öÆÛ¸µÀ» ÇÏÁö ¾Ê°í À̹ÌÁö¸¦ ¹Ýº¹ÀûÀ¸·Î ±×¸®¸é ±ô¹ÚÀÓÀÌ ¹ß»ýÇÑ´Ù.
DoubleBuffer |
using
System; ~ using System.Windows.Forms; namespace
DoubleBuffer { public
partial class Form1 : Form { int
ex = 10, ey = 100; const
int r = 15; public
Form1() { InitializeComponent(); timer1.Start(); } private
void Form1_Paint(object sender, PaintEventArgs e) { int
x, y; for
(x = 0; x < ClientRectangle.Right; x += 10) { e.Graphics.DrawLine(Pens.Black,
x, 0, x, ClientRectangle.Bottom); } for
(y = 0; y < ClientRectangle.Bottom; y += 10) { e.Graphics.DrawLine(Pens.Black,
0, y, ClientRectangle.Right, y); } e.Graphics.FillEllipse(new
SolidBrush(Color.LightGreen), ex - r, ey - r, r * 2, r * 2); e.Graphics.DrawEllipse(new
Pen(Color.Blue, 5), ex - r, ey - r, r * 2, r * 2); } private
void timer1_Tick(object sender, EventArgs e) { ex
+= 6; if
(ex > ClientRectangle.Right) ex = 0; Invalidate(); } } } |
º¹ÀâÇÑ ¹è°æÀÌ ÀÖ´Â »óȲÀ» ¸¸µé±â À§ÇØ ¹ÙµÏÆÇ ¹è°æ ¹«´Ì¸¦ ±ò¾Æ µÎ¾ú´Ù. ÃÊ´ç 20¹ø¾¿ ¹ß»ýÇϴ ŸÀÌ¸Ó À̺¥Æ®¿¡¼ °øÀÇ x ÁÂÇ¥ÀÎ ex¸¦ 6¾¿ Áõ°¡½ÃÄÑ ¿ÞÂÊ¿¡¼ ¿À¸¥ÂÊÀ¸·Î À̵¿½ÃÅ°¸ç À̶§¸¶´Ù Invalidate¸¦ È£ÃâÇÏ¿© ´Ù½Ã ±×¸°´Ù. Paint À̺¥Æ®¿¡¼´Â
ÀÌÀü °øÀÇ ÀÜ»óÀ» Áö¿ì±â À§ÇØ È¸éÀ» ¿ÏÀüÈ÷ Áö¿ü´Ù°¡ ¹è°æÀ» ±×¸®°í »õ À§Ä¡¿¡ °øÀ» Ãâ·ÂÇÑ´Ù.
ÀÌ °úÁ¤À» ÃÊ´ç 20¹ø¾¿ ¹Ýº¹ÇÏ´Ù º¸´Ï ÁÖ±âÀûÀ¸·Î ȸéÀº Áö¿öÁ³´Ù
±×·ÁÁ³´Ù¸¦ ¹Ýº¹ÇÏ¸ç »ç¿ëÀÚ ´«¿¡ Áö¿öÁø ȸé°ú ±×·ÁÁø ȸéÀÌ ±³´ë·Î º¸ÀδÙ. Áö¿öÁø ȸéÀÌ °¡²û º¸ÀÌ´Â
ÀÌ Çö»óÀ» ±ô¹ÚÀÓÀ̶ó°í Çϴµ¥ ÆûÀÌ ÀÛÀ» ¶§´Â Àß ´À³¥ ¼ö ¾øÁö¸¸ ÆûÀ» Å©°Ô Çϸé ÈξÀ ´õ ½ÉÇØÁø´Ù. ÆûÀ»
ÃÖ´ëÈÇÏ¸é °ÅÀÇ ¸øºÁÁÙ Áö°æÀÌ´Ù.
ÀÌ ¹®Á¦¸¦ ÇØ°áÇÏ´Â °¡Àå °£´ÜÇÑ ¹æ¹ýÀº ÆûÀÇ DoubleBuffered ÇÁ·ÎÆÛƼ¸¦ true·Î ¹Ù²Ù´Â °ÍÀÌ´Ù. ÀÌ ÇÁ·ÎÆÛƼ¸¦ true·Î ¼³Á¤Çϸé À̹ÌÁö¸¦ ¸Þ¸ð¸®¿¡¼ ¿ÏÀüÈ÷ ±×¸° ÈÄ È¸éÀ¸·Î Àü¼ÛÇϹǷΠ±ô¹ÚÀÓÀÌ ¾ø´Ù.
ÀÌ ÇÁ·ÎÆÛƼ´Â Æí¸®ÇÏÁö¸¸ ÇÁ·¹ÀÓ¿öÅ©¿¡ ÀÇÇØ ÀÚµ¿À¸·Î ó¸®ÇÏ´Ù º¸´Ï ´À¸®¸ç ¾ðÄ¿¹öµÉ ¶§³ª º¹±¸µÉ ¶§ µî ´Ù½Ã ±×¸±
ÇÊ¿ä°¡ ¾øÀ» ¶§µµ ¿ÏÀüÈ÷ ´Ù½Ã ±×·Á È¿À²ÀûÀÌÁö ¸øÇÏ´Ù. ´ÙÀ½ ÄÚµå´Â
Bitmap °´Ã¼¸¦ ÀÌ¿ëÇÏ¿© ¼öµ¿À¸·Î ´õºí ¹öÆÛ¸µÀ» ÇÑ´Ù.
DoubleBuffer |
namespace
DoubleBuffer { public
partial class Form1 : Form { int
ex = 10, ey = 100; const
int r = 15; Bitmap
B; public
Form1() { InitializeComponent(); timer1.Start(); } private
void Form1_Paint(object sender, PaintEventArgs e) { if
(B != null) { e.Graphics.DrawImage(B,
0, 0); } } protected
override void OnPaintBackground(PaintEventArgs e) { //
¹è°æ»öÀ¸·Î Áö¿ìÁö ¾ÊÀ½ } private
void timer1_Tick(object sender, EventArgs e) { int
x, y; if
(B == null || B.Width != ClientSize.Width || B.Height != ClientSize.Height) { B
= new Bitmap(ClientSize.Width, ClientSize.Height); } Graphics
G = Graphics.FromImage(B); G.Clear(SystemColors.Window); ex
+= 6; if
(ex > ClientRectangle.Right) ex = 0; for
(x = 0; x < ClientRectangle.Right; x += 10) { G.DrawLine(Pens.Black,
x, 0, x, ClientRectangle.Bottom); } for
(y = 0; y < ClientRectangle.Bottom; y += 10) { G.DrawLine(Pens.Black,
0, y, ClientRectangle.Right, y); } G.FillEllipse(new
SolidBrush(Color.LightGreen), ex - r, ey - r, r * 2, r * 2); G.DrawEllipse(new
Pen(Color.Blue, 5), ex - r, ey - r, r * 2, r * 2); Invalidate(); } } } |
ºñÆ®¸Ê Çʵå B´Â nullÀÎ
»óÅ·ΠÃʱâȵǸç ŸÀÌ¸Ó À̺¥Æ®¸¦ óÀ½ ¹Þ¾ÒÀ» ¶§ ÀÛ¾÷¿µ¿ªÀÇ Å©±â·Î ÃʱâÈÇÑ´Ù. ÀÛ¾÷¿µ¿ª Å©±â°¡ ¹Ù²î¸é
ºñÆ®¸ÊÀº »õ·Î¿î Å©±â·Î ´Ù½Ã »ý¼ºµÈ´Ù. ÀÛ¾÷¿µ¿ª Å©±â°¡ °íÁ¤µÇ¾î ÀÖ´Ù¸é ÀÌ Ã³¸®¸¦ ¸Å¹ø ÇÒ ÇÊ¿ä´Â ¾ø´Ù.
ºñÆ®¸Ê °´Ã¼ B·ÎºÎÅÍ
Graphics °´Ã¼ G¸¦ »ý¼ºÇÏ°í GÀÇ ±×¸®±â
¸Þ¼µå¸¦ È£ÃâÇÏ¸é ¸ðµç ±×¸®±â´Â ºñÆ®¸Ê °´Ã¼·Î Ãâ·ÂµÈ´Ù. ȸéÀ» Áö¿ì°Å³ª °øÀÌ À̵¿ÇÏ´Â ¸ð½ÀÀº »ç¿ëÀÚ
´«¿¡ º¸ÀÌÁö ¾ÊÀ¸¸ç µû¶ó¼ ±ô¹ÚÀÓµµ ÀüÇô ¾ø´Ù. Paint¿¡¼´Â ŸÀÌ¸Ó À̺¥Æ®¿¡¼ ¿Ï¼ºÇØ ³õÀº ºñÆ®¸ÊÀ»
ȸéÀ¸·Î °í¼Ó Àü¼ÛÇÏ¸é µÈ´Ù. ¾ðÄ¿¹öµÉ ¶§³ª º¹±¸µÉ ¶§´Â ºñÆ®¸ÊÀ» ´Ù½Ã ±×¸± ÇÊ¿ä ¾øÀÌ ÁغñµÈ ºñÆ®¸Ê¸¸
ÀçÀü¼ÛÇÑ´Ù.
Invalidate ¸Þ¼µå´Â ¹«Á¶°Ç ȸéÀ» Áö¿î ÈÄ ´Ù½Ã ±×¸®´Âµ¥
ÀÌ·¸°Ô ÇÏ¸é ´õºí ¹öÆÛ¸µÀ» Çϳª ¸¶³ªÀÌ´Ù. ±×·¡¼ ȸéÀ» Áö¿ìÁö ¾Êµµ·Ï OnPaintBackground¸¦ ÀçÁ¤ÀÇÇÏ¿© ¾Æ¹«°Íµµ ÇÏÁö ¾Êµµ·Ï ÇØ¾ß ÇÑ´Ù.
¹è°æÀ» Áö¿ìÁö ¾ÊÀ¸¸é ¹«Á¶°Ç µ¤¾î¼ ±×¸®¹Ç·Î Áö¿öÁø ȸéÀÌ º¸ÀÏ °Ü¸¦ÀÌ ¾ø´Ù.
À̹ÌÁö¸¦ ÀúÀåÇÏ´Â ¹æ½ÄÀº Å©°Ô ·¡½ºÅÍ¿Í º¤ÅÍ µÎ °¡Áö·Î ±¸ºÐµÈ´Ù. ·¡½ºÅÍ
À̹ÌÁö´Â Á¡ÀÇ ÁýÇÕÀ¸·Î À̹ÌÁöÀÇ ¸ð¾çÀ» ±â¾ïÇÏ´Â ¹æ½ÄÀ¸·Î¼ BMP, JPG µî ÈçÈ÷ ¿ì¸®°¡ »ç¿ëÇÏ´Â
±×·¡ÇÈ ÆÄÀÏÀÌ ÀÌ ¹æ½ÄÀ» »ç¿ëÇÑ´Ù. À̹ÌÁö¸¦ ÀúÀåÇÏ´Â ¹æ½ÄÀÌ ºñµð¿À ·¥ÀÇ ¹°¸®ÀûÀÎ ±¸Á¶¿Í À¯»çÇØ Ãâ·Â
¼Óµµ°¡ ºü¸£°í ¾ó¸¶µçÁö º¹ÀâÇÑ À̹ÌÁöµµ Ç¥ÇöÇÒ ¼ö ÀÖ´Ù.
ÀÌ¿¡ ºñÇØ º¤ÅÍ´Â À̹ÌÁö¸¦ ±×¸®´Â ¸í·ÉÀ» ºÎÈ£ÈÇÏ¿© ÀúÀåÇÏ´Â ¹æ½ÄÀÌ¸ç ¸í·ÉÀ» ¼ø¼´ë·Î Àç»ýÇÏ¿© ¿ø·¡ÀÇ À̹ÌÁö¸¦
º¹¿øÇÑ´Ù. ¸í·ÉÀ» Àç»ýÇÒ ¶§ ÀÏÁ¤ÇÑ ºñÀ²À» °öÇÏ¿© À̹ÌÁö ¼Õ»ó¾øÀÌ È®´ëÇÒ ¼ö ÀÖ´Ù. ¶ÇÇÑ °¢ µµÇüÀ» ±×¸®´Â ¸í·ÉÀÌ ºÎȣȵǾî ÀÖ¾î °³º° µµÇüÀ» ºÐ¸®ÇÏ¿© ÆíÁýÇÒ ¼öµµ ÀÖ´Ù. ÇÏÁö¸¸ »çÁø°°Àº Á¤±³ÇÑ À̹ÌÁö¸¦ Ç¥ÇöÇϱ⿡´Â ÀûÇÕÇÏÁö ¾ÊÀ¸¸ç ¸í·ÉÀ» ÀÏÀÏÀÌ Àç»ýÇØ¾ß ÇϹǷΠ´À¸®´Ù.
GDI+¿¡¼ º¤ÅÍ À̹ÌÁö¸¦ Ç¥ÇöÇϴ Ŭ·¡½º´Â MetafileÀ̸ç Image·ÎºÎÅÍ ÆÄ»ýµÈ´Ù. ÀÌ Å¬·¡½º´Â System.Drawing.Imaging ³×ÀÓ½ºÆäÀ̽º¿¡
Á¤ÀǵǾî ÀÖ´Ù. ÆÄÀϷκÎÅÍ ÀоîµéÀÏ ¼ö ÀÖÁö¸¸ ÄÚµå·Î Á÷Á¢ »ý¼ºÇÒ ¼öµµ ÀÖ¾î¼ »ý¼ºÀÚ°¡ ¹«·Á 39°³³ª Á¦°øµÈ´Ù. ÀÏ´Ü ¸ÞŸ ÆÄÀϷκÎÅÍ ÀоîµéÀÌ´Â »ý¼ºÀÚ¸¸ ¾Ë¾Æº¸ÀÚ.
public Metafile (string filename)
Àμö·Î ¸ÞŸ ÆÄÀÏÀÇ °æ·Î¸¦ Àü´ÞÇÑ´Ù. ¸ÞŸ ÆÄÀϵµ ¿©·¯ Á¾·ù°¡ Àִµ¥ 16ºñÆ® ¸ÞŸ ÆÄÀÏÀº È®ÀåÀÚ wmf¸¦ °¡Áö¸ç 32ºñÆ® ¸ÞŸ ÆÄÀÏ°ú GDI+¿¡¼ È®ÀåµÈ EMF+´Â emf È®ÀåÀÚ¸¦ °¡Áø´Ù.
¸ÞŸ ÆÄÀÏÀº Ŭ¸³¾ÆÆ®·Î ¸¹ÀÌ Á¦°øµÇ¹Ç·Î ½±°Ô ±¸ÇÒ ¼ö ÀÖ´Ù. Áö±Ý ´çÀå ¿©·¯ºÐÀÇ Çϵåµð½ºÅ©¸¦
µÚÁ® º¸¸é ÃÖ¼ÒÇÑ ¼ö¹é°³´Â ¹ß°ßµÈ´Ù.
¸ÞŸ ÆÄÀϵµ ÀÏÁ¾ÀÇ ImageÀ̹ǷΠºñÆ®¸Ê°ú ¸¶Âù°¡Áö·Î DrawImage ¸Þ¼µå·Î Ãâ·ÂÇÏ¸ç ¾î¶² ¸Þ¼µå¸¦ È£ÃâÇϴ°¡¿¡ µû¶ó È®´ë, Ãà¼Ò
°¡´ÉÇÏ´Ù. ´ÙÀ½ ¿¹Á¦´Â ³ªºñ ¸ð¾çÀÇ ¸ÞŸ ÆÄÀÏÀ» ÀÛ¾÷¿µ¿ª¿¡ °¡µæ ä¿ö Ãâ·ÂÇÑ´Ù.
MetaTest |
using
System; ~ using System.Windows.Forms; using
System.Drawing.Imaging; namespace
MetaTest { public
partial class Form1 : Form { Metafile
M; public
Form1() { InitializeComponent(); M
= new Metafile("buttrfly.wmf"); SetStyle(ControlStyles.ResizeRedraw,
true); } private
void Form1_Paint(object sender, PaintEventArgs e) { e.Graphics.DrawImage(M,
ClientRectangle); } } } |
Metafile ŸÀÔÀÇ Çʵå MÀ»
¼±¾ðÇÏ°í »ý¼ºÀÚ¿¡¼ buttrfly.wmf ¸ÞŸ ÆÄÀÏÀ» Àоîµé¿´´Ù. ÀÌ
¿¹Á¦°¡ Á¦´ë·Î ½ÇÇàµÇ·Á¸é ½ÇÇà ÆÄÀÏÀÌ ÀÖ´Â µð·ºÅ͸®¿¡ ¸ÞŸ ÆÄÀÏÀÌ Á¸ÀçÇØ¾ß ÇÑ´Ù. MetafileÀÇ
»ý¼ºÀÚ¸¦ È£ÃâÇÏ´Â ´ë½Å Image Ŭ·¡½ºÀÇ FromFile Á¤Àû
¸Þ¼µå·Î ÀÐÀ» ¼öµµ Àִµ¥ À̶§´Â Image ŸÀÔÀÇ °´Ã¼°¡ ¸®ÅϵȴÙ.
Paint À̺¥Æ®¿¡¼´Â M ¸ÞŸ
ÆÄÀÏÀ» ÀÛ¾÷¿µ¿ªÀÇ Å©±â¸¸Å °¡µæ Ãâ·ÂÇß´Ù. ÆûÀÇ Å©±â¸¦ º¯°æÇÏ¸é ³ªºñµµ °°ÀÌ Ä¿Áö´Âµ¥ ÀÌ·¸°Ô µÇ±â À§Çؼ´Â
ÆûÀÇ Å©±â°¡ º¯°æµÉ ¶§¸¶´Ù ÀÚµ¿À¸·Î ¹«È¿ÈµÇµµ·Ï ResizeRedraw ½ºÅ¸ÀÏÀ» ÁöÁ¤ÇØ µÎ¾î¾ß ÇÑ´Ù. ÆûÀÇ Å©±â¸¦ º¯°æÇØ º¸ÀÚ.
ÆûÀ» ¾Æ¹«¸® È®´ëÇصµ °è´Ü Çö»óÀÌ »ý±âÁö ¾ÊÀ¸¸ç ¹Ì·ÁÇÏ´Ù. ÀÌ°ÍÀÌ
º¤ÅÍ ±×·¡ÇÈÀÇ ÀåÁ¡ÀÌ´Ù. ¸ÞŸ ÆÄÀÏ¿¡ ´ëÇؼµµ ¿¬±¸ÇØ º¸ÀÚ¸é ÇÒ ¾ê±â°¡ ¾ÆÁÖ ¸¹Áö¸¸ ´å³Ý°ú´Â Á÷Á¢ÀûÀÎ
¿¬°ü¼ºÀÌ ¶³¾îÁö¹Ç·Î Ãâ·Â ¹æ¹ý Á¤µµ¸¸ ¼Ò°³ÇÑ´Ù.