À©µµ¿ì ÇÁ·Î±×·¡¹Ö ÀÚ·á |
---|
Á¦¸ñ | [MFC] Bitmaps #1 1998/07/28 (16:51) |
À̸§ | ±èÈ¿¿ø |
¹øÈ£ | 42 |
Á¶È¸ | 342 |
º»¹® |
¸ÕÀú ¿¹ÀüÀÇ bitmap programming ¹æ½ÄÀÎ ÀåÄ¡-ÀÇÁ¸ÀûÀÎ GDI Bitmap(Memory Context Device¿Í °°ÀÌ ÀÛµ¿ÇÏ´Â)¿¡ °üÇؼ ¾Ë¾Æº¸°í, ±× ´ÙÀ½¿¡´Â ÀåÄ¡-µ¶¸³ÀûÀÎ ºñÆ®¸Ê(GDI)¿¡ °üÇÏ¿© ¾Ë¾Æº¸ÀÚ. À©µµ¿ìÁî¿¡´Â µÎ Á¾·á(GDI,DIB)ÀÇ ºñÆ®¸ÊÀÌ ÀÖ´Ù. GDI ºñÆ®¸Ê °´Ã¼´Â MFCÀÇ Cbitmap Ŭ·¡½º·Î Ç¥ÇöµÈ´Ù. DIB´Â GDIº¸´Ù ¸¹Àº ÀÌÁ¡À» Á¦°øÇÑ´Ù. °íÀ¯ÇÑ »ö»ó Á¤º¸¸¦ Æ÷ÇÔÇÏ°í ÀÖ¾î¼ »ö»ó ÆÈ·¹Æ® °ü¸®°¡ ½±°í ÇÁ¸°Æ®½Ã ±×·¹ÀÌ À½¿µÀ» Á¦¾îÇϱ⠽±´Ù. DIB´Â ÀϹÝÀûÀ¸·Î BMPÆÄÀÏ·Î µð½ºÅ©¿¡ ÀúÀåµÇ°Å³ª ¾Æ´Ï¸é EXE³ª DLLÆÄÀÏÀÇ ¸®¼Ò½º·Î ÀúÀåµÈ´Ù. 1. Color Bitmap, Mono Bitmap ¸¹Àº Ä÷¯ ºñÆ®¸ÊµéÀÌ 16Ä÷¯¸¦ »ç¿ëÇϸç, Ç¥ÁØ VGAº¸µå¿¡´Â 4°³ÀÇ Ä÷¯ Ç÷¹ÀÎÀÌ Àִµ¥, °¢°¢ 1ºñÆ®¾¿À» Á¶ÇÕÇÏ¿© 4ºñÆ® »ö»ó°ªÀ» ¸¸µé¾î³½´Ù.(16Ä®¶ó). ¸ð³ë ºñÆ®¸ÊÀº ÇÑ°³ÀÇ Ä÷¯ Ç÷¹ÀÎÀ» °¡Áö¸ç, °¢ Çȼ¿Àº off(0) ¾Æ´Ï¸é onÀ¸·Î ¼³Á¤Çϸç, CDC::SetTextColor()ÇÔ¼ö´Â Ãâ·Â »ö»óÀ» off·Î ¼³Á¤Çϸç SetBkColor()´Â Ãâ·Â »ö»óÀ» on À¸·Î ¼³Á¤ÇÑ´Ù. 2. GDI Bitmap »ç¿ëÇϱâ GDI ºñÆ®¸ÊÀº ÆæÀ̳ª ÆùÆ®¿Í °°Àº GDI °´Ã¼ ÁßÀÇ ÇϳªÀÌ´Ù. GDI ºñÆ®¸ÊÀ» »ç¿ëÇÏ·Á¸é ºñÆ®¸ÊÀ» ¸¸µç ´ÙÀ½, Device Context ·Î ÇØ´ç ºñÆ®¸ÊÀ» ¼±ÅÃÇÏ°í °´Ã¼ÀÇ »ç¿ëÀÌ ³¡³ª¸é °´Ã¼¿¡ ´ëÇÑ ¼±ÅÃÀ» ÇØÁ¦ÇÏ°í °´Ã¼¸¦ »èÁ¦ÇØ¾ß ÇÑ´Ù. CDC::CreatCompatibleDC() ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© Memory Device Context¸¦ ¸¸µé¾î »ç¿ëÇÑ´Ù.(ºñÆ®¸ÊÀº µð¹ÙÀ̽º ÄÁÅؽºÆ®³ª ÇÁ¸°ÅÍ µð¹ÙÀ̽º ÄÁÅؽºÆ®·Î Á÷Á¢ ¼±ÅÃÇÒ ¼ö ¾ø´Ù.) StretchBlt(), BitBlt()ÇÔ¼öÀÀ ÀÌ¿ëÇÏ¿© ¸Þ¸ð¸® µð¹ÙÀ̽º ÄÁÅؽºÆ®·ÎºÎÅÍ ½ÇÁ¦ µð¹ÙÀ̽º ÄÁÅؽºÆ®(ȸéÀ̳ª ÇÁ¸°ÅÍ)·Î ºñÆ®µéÀ» º¹»çÇÑ´Ù. º¸Åë ÀÌ µÎ ÇÔ¼ö´Â OnDraw()ÇÔ¼ö ³»¿¡¼ È£ÃâÇÑ´Ù. 3. ¿¹Á¦ CBitmap bitmap; CDC dcMemory; bitmap.LoadBitmap(IDB_BITMAP1); dcMemory.CreateCompatibleDC(pDC); dcMemory.SelectObject(&bitmap); pDC->BitBle(100,100,54,96,&dcMemory,0,0,SRCCOPY); CDC::LoadBitmap()ÇÔ¼ö´Â ¸®¼Ò±× ±â¹Ý DIB¸¦ GDIºñÆ®¸ÊÀ¸·Î º¯È¯ÇÑ´Ù. BitBlt()ÇÔ¼ö´Â ¸Þ¸ð¸® µð¹ÙÀ̽º ÄÁÅؽºÆ®¿¡¼ µð½ºÇ÷¹ÀÌ µð¹ÙÀ̽º ÄÁÅؽºÆ®·Î Çȼ¿µéÀ» º¹»çÇÑ´Ù. Mapping Mode°¡ MM_TEXT¶ó¸é º° ¹®Á¦°¡ ¾øÁö¸¸, MM_LOENGLISH¶ó¸é Å©±â°¡ ¸ÂÁö ¾Ê±â ¶§¹®¿¡, BitBlt()°¡ ¾Æ´Ñ, StretchBlt() ¸¦ ÀÌ¿ëÇØ¾ß ÇÑ´Ù. CSize size(54,96); pDC->DPtoLP(&size); pDC->StretchBlt(0,0,size.cx,-size.cy,&dcMemory,0,0,54,96,SRCCOPY); GetObject()ÇÔ¼ö¿¡¼´Â Bitmap Å©±â¸¦ ¾ò´Â´Ù. BITMAP bm; dcMemory.GetObject(sizeof(bm),&bm); |