µ¨ÆÄÀÌ VCLÀÇ TGraphic, TPicture, TImageÀº ¹«¾ùÀ̸ç, ±×·¡ÇÈ ÆÄÀÏ Æ÷¸ËÀº ¾î¶»°Ô º¯È¯ÇÏ´Â °ÍÀΰ¡¿ä?
Ãâó :
http://www.awaresystems.be/techtalks/003_graphic_picture_image.html¿ªÀÚÁÖ: Àú¿ª½Ãµµ Ç×»ó Çò±ò¸®´Â ºÎºÐÀÔ´Ï´Ù. ¿¹Àü¿¡ È®½ÇÈ÷ ¾Ë¾ÆµÎ¾ú´Âµ¥ ¿äÁò¿£ ¶Ç Çò±ò¸®´õ±º¿ä. ¿¹Àü¿¡ ´©±º°¡ Àß Á¤¸®ÇصР¹®¼°¡ ÀÖ¾ú´Âµ¥ Áö±Ý ã¾Æº¸·Á´Ï ¾ø¾ú½À´Ï´Ù. ±×·¡¼ ÀÎÅÍ³Ý °Ë»öÇØ º¸´Ï ã¾ÆÁø ¹®¼°¡ ÀÌ°ÍÀÔ´Ï´Ù. ªÀº ¿µ¾îÁö¸¸ ¹ø¿ªÇØ º¸¾Ò½À´Ï´Ù. (¸¹ÀÌ ÀÇ¿ªÇßÀ¸¹Ç·Î ÀÌÇعٶø´Ï´Ù.)
TGraphic, TPicture, TImage¿¡ ´ëÇؼ´Â ¸¹À̵é È¥¶õ½º·¯¿ö ÇÑ´Ù. VCL¿¡¼ TGraphicÀ» µÖ¼ µðÀÚÀÎÀ» ÇÑ Àǵµ´Â µµÅë ÀÌÇØÇϱ⠾î·Æ°í, TBitmap, TImage ¿ª½Ã »ó´çÈ÷ È¥¶õ½º·´´Ù. (¹®¼È±îÁö Á¦´ë·Î µÇ¾îÀÖÁö ¾Ê´Ù.)
±×·³¿¡µµ ºÒ±¸ÇÏ°í »ó´çÈ÷ ÁÁÀº µðÀÚÀÎÀ̱ä ÇÏ´Ù.
°£´ÜÈ÷ ¸»Çؼ (¿ÏÀüÈ÷ Á¤È®ÇÑ ³»¿ëÀº ¾Æ´Ï´Ù)
1. TGraphicÀº ±×·¡ÇÈ µ¥ÀÌÅ͸¦ °ü¸®ÇÏ°í, µå·ÎÀ× Ç¥¸é(drawing surface) (TCanvas¿Í À©µµ¿ìÁî DC)¿¡ ±×¸®´Â ±â´ÉÀ» ÇÑ´Ù.
1.1. TGraphicÀ» »ó¼Ó¹ÞÀº °´Ã¼ (TJpegImage, TBitmap µî)Àº ÇØ´ç ÆÄÀÏ Æ÷¸ËÀ» ÀÐ°í ¾²´Â ±â´ÉÀÌ Ãß°¡µÈ °ÍÀÌ´Ù. ±×·¡¼ TJpegImage´Â ±×·¡ÇÈ µ¥ÀÌÅ͸¦ °ü¸®ÇÏ°í ±×¸± ¼ö ÀÖÀ¸¸ç, ¶ÇÇÑ JPEG ÆÄÀϷκÎÅÍ ±×·¡ÇÈ Å×ÀÌÅ͸¦ ÀÐ°í ¾µ ¼ö ÀÖ´Ù.
1.2. TBitmapÀº À§¿¡ ¸»ÇÑ ´Ù¾çÇÑ ±â´ÉµéÀ» ´Ù·ç±â À§ÇÑ °´Ã¼À̸ç, ¶ÇÇÑ À©µµ¿ì ·¹º§ÀÇ ±×·¡ÇÈ ¿ÀºêÁ§Æ®ÀÌ´Ù. (¿©±â¼ ±×·¡ÇÈ ¿ÀºêÁ§Æ®´Â À©µµ¿ìÁî ¿î¿µÃ¼Á¦¿¡¼ ¸»ÇÏ´Â "±×·¡ÇÈ ¿ÀºêÁ§Æ®"¸¦ ¸»ÇÏ´Â °ÍÀÓ) ±×·¡¼ ƯÁ¤ ÆÄÀÏ Æ÷¸Ë°ú´Â ¹«°üÇÏ°Ô Àӽà ¹öÆÛ µîÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Â °´Ã¼ÀÌ´Ù. (¼ø¼öÇÏ°Ô ºñÆ®¸ÊÀ̶ó´Â ¿ë¾î ÀÚü°¡ ºñÆ®ÀÇ ¹è¿À» °¡Áö°í ÀÖ´Ù´Â ¶æÀ̹ǷÎ)
1.3. TPicture´Â TGraphicÀ» ³»ºÎÀûÀ¸·Î »ç¿ëÇÑ´Ù. (TBitmap, TJpegImage¿Í °°Àº TGraphicÀ» »ó¼Ó¹Þ´Â ¾ÖµéÀ» »ç¿ëÇÑ´Ù.) ±×·¡¼ TPictureÀÇ LoadFromFile ¸Þ¼µå¿¡¼´Â ÆÄÀÏ È®ÀåÀÚ¿¡ µû¶ó¼ ÇØ´çÇÏ´Â ÆÄÀÏ Æ÷¸ËÀ» À§ÇÑ TGraphic °´Ã¼ (TGraphicÀ» »ó¼Ó¹ÞÀº °´Ã¼)¸¦ »ý¼ºÇؼ ½ÇÁ¦ ÆÄÀÏÀ» ·ÎµåÇÏ´Â ÀÛ¾÷À» À§ÀÓ½ÃŲ´Ù.
2. TImage´Â TPicture °´Ã¼¸¦ °¡Áö°í ÀÖ°í ±×°ÍÀ» °ü¸®ÇÑ´Ù. TImage°¡ TPicture¸¦ ´ëüÇÏ·Á°í ÀÖ´Â °ÍÀº ¾Æ´Ï°í, UI µî¿¡ ±×¸®´Â ±â´ÉÀ» º¸¿ÏÇϱâ À§ÇØ ÀÖ´Â °ÍÀÌ´Ù. ±×·¯¹Ç·Î ±×·¡ÇÈ µ¥ÀÌÅ͸¦ ´Ù·ç±â À§Çؼ Visible ¼Ó¼ºÀÌ FalseÀÎ TImage¸¦ »ç¿ëÇÏ´Â °ÍÀº ¿ÇÁö ¾Ê´Ù.
(À§ÀÇ ³»¿ëÀÌ ´Ù ¿ÏÀüÈ÷ ¸Â´Â °ÍÀº ¾Æ´Ï´Ù. TGraphic °´Ã¼°¡ ±×·¡ÇÈ µ¥ÀÌÅ͸¦ °ü¸®ÇÏ°í ±×¸®´Â ¹æ¹ýÀ» ½ÇÁ¦·Î ¾Æ´Â °ÍÀº ¾Æ´Ï´Ù. ±× ±â´ÉµéÀº TGraphicÀ» »ó¼Ó¹ÞÀº ¾ÖµéÀÌ ÇÑ´Ù. ÀÌ·¯ÇÑ Á¡Àº ÁÁÀº ¼³°è¶ó°í ÇÒ ¼ö ÀÖ´Ù. TGraphic¸¦ »ó¼ÓÇÑ °´Ã¼¸¦ ¸¸µå¹Ç·Î½á ¿©·¯°¡Áö »óȲ¿¡ ´ëóÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù. ¿¹¸¦ µé¸é, ¸Å¿ì Å« À̹ÌÁö¸¦ ´Ù·ç¾î¾ß ÇѴٰųª ÇÒ °æ¿ì TGraphic¸¦ »ó¼ÓÇؼ ÇØ´ç ±â´É¿¡ ÃÖÀûÈµÈ °´Ã¼¸¦ ±¸ÇöÇÏ¸é µÇ±â ¶§¹®ÀÌ´Ù.)
ÀÌ·¯ÇÑ TGrahpicÀÇ °´Ã¼ÁöÇâÀûÀÎ ¼³°è¸¦ È°¿ëÇÒ ¼ö ÀÖ´Â °¡Àå ÈçÇÑ ¿¹´Â ±×·¡ÇÈ ÆÄÀÏ Æ÷¸Ë °£ÀÇ º¯È¯À» µé ¼ö ÀÖ´Ù. JPEG ÆÄÀÏÀ» BMP ÆÄÀÏ·Î º¯È¯ÇÑ´Ù°í »ý°¢ÇغÁ¶ó. ±×·¯±â À§Çؼ´Â JPEG ÆÄÀÏ¿¡¼ ·¡½ºÅÍ À̹ÌÁö µ¥ÀÌÅ͸¦ ÀоîµéÀÌ°í, BMP ÆÄÀÏ·Î ·¡½ºÅÍ À̹ÌÁö µ¥ÀÌÅ͸¦ ¾²´Â ÀÛ¾÷À» ÇØ ÁÖ¾î¾ß ÇÑ´Ù. µ¨ÆÄÀÌ¿¡¼´Â ÀÌ ÀÛ¾÷À» TJpegImage °´Ã¼¿Í TBitmap °´Ã¼¸¦ ÀÌ¿ëÇÏ¿© ¼Õ½±°Ô ÇÒ ¼ö ÀÖ´Ù.
procedure ConvertJpegFileToBitmapFile(const SourceFilename, DestinationFilename: String);
var
jpeg: TJpegImage;
bmp: TBitmap;
begin
jpeg := TJpegImage.Create;
try
jpeg.LoadFromFile(SourceFilename);
bmp := TBitmap.Create;
try
bmp.Assign(jpeg);
bmp.SaveToFile(DestinationFilename);
finally
bmp.Free;
end;
finally
jpeg.Free;
end;
end;
(¿ªÀÚÁÖ : Assign ÇÔ¼ö¸¦ È£ÃâÇÔÀ¸·Î¼ ¿ì¸®°¡ ¿øÇÏ´Â ¸ñÀûÀ» ½±°Ô ÀÌ·ê ¼ö ÀÖ´Ù. ´Ù½Ã ¸»Çؼ TGrpahic¸¦ »ó¼Ó¹ÞÀº ¾Öµé »çÀÌ¿¡´Â Assign ÇÔ¼ö¸¦ È£ÃâÇÔÀ¸·Î¼ ±×·¡ÇÈ Æ÷¸Ë º¯È¯À» ½±°Ô ÇÒ ¼ö ÀÖ´Ù.)
À§¿¡¼ º¸¾ÒµíÀÌ Assign ÇÔ¼ö·Î ÇØ´ç ÀÛ¾÷À» ¼öÇàÇß´Ù. Assing ÇÔ¼ö´Â °ø½ÄÀûÀ¸·Î´Â µÎ °´Ã¼°£¿¡ ±×·¡ÇÈ µ¥ÀÌÅÍ´Â º¹»çÇÑ´Ù°í µÇ¾îÀÖÁö¸¸, TJpegImage, TBitmap µîÀÇ ±×·¡ÇÈ °´Ã¼´Â ½ÇÁ¦·Î ±×·¯ÇÑ ¸Þ¸ð¸® º¹»ç ÀÛ¾÷À» ÇÏÁö´Â ¾Ê´Â´Ù. ±×·¡ÇÈ µ¥ÀÌÅ͸¦ ´ã°í ÀÖ´Â °´Ã¼¸¦ °øÀ¯ÇÏ¸ç ´ÜÁö »ç¿ë Ä«¿îÅÍ (usage counter)¸¦ Áõ°¡½Ãų »ÓÀÌ´Ù.