±ÍÇÏ´Â ¼Õ´Ô À̽ʴϴÙ
·Î±×ÀÎ
ȸ¿ø°¡ÀÔ
  
  µ¨¸¶´ç °ø½Ä ÀºÇà°èÁÂ
  ÇϳªÀºÇà 227-910235-83607
  ¿¹±ÝÁÖ ÀÌ»ó±¹(¿î¿µÁø)
ÇÁ·ÎÁ§Æ® °Ô½ÃÆÇ
ÅõÇ¥°Ô½ÃÆÇ
µ¨¸¶´ç¼Ò°³
±âÃʺÎÅÍ È°¿ë±îÁö! µ¨ÆÄÀÌ ±³À° - µ¥ºê±â¾î
°­ÁÂ, ÆÁ, Á¤º¸ °­ÁÂ, ÆÁ, Á¤º¸ ÀÔ´Ï´Ù.
±Û³»¿ë - °­ÁÂ, ÆÁ, Á¤º¸
 µ¨ÆÄÀÌ VCLÀÇ TGraphic, TPicture, TImageÀº ¹«¾ùÀ̸ç, ±×·¡ÇÈ ÆÄÀÏ Æ÷¸ËÀº ¾î¶»°Ô º¯È¯ÇÏ´Â °ÍÀΰ¡¿ä?
ȫȯ¹Î
(ȫȯ¹Î)
2009-11-18 ¿ÀÈÄ 6:45:29
Ä«Å×°í¸®: °­ÁÂ
7340ȸ Á¶È¸



µî·ÏµÈ ÆÄÀÏÀÌ ¾ø½À´Ï´Ù.
µ¨ÆÄÀÌ 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)¸¦ Áõ°¡½Ãų »ÓÀÌ´Ù.