À©µµ¿ì ÇÁ·Î±×·¡¹Ö ÀÚ·á

HomePage Backward Forward Post Reply List
Delete Modify
  Á¦¸ñ   [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);


HomePage Backward Forward Post Reply List
1998 by swindler