¿øÇü | BOOL BitBlt(HDC hDC,int X,int Y,int nWidth,int nHeignt, HDC hSrcDC,int XSrc,int ySrc,DWORD dwROP); | ||||||||||||||||||||||||||||||||||||||||||||||||
MFC ¿øÇü | BOOL CDC::BitBlt( int x, int y, int nWidth, int nHeight, CDC* pSrcDC, int xSrc, int ySrc, DWORD dwRop ); | ||||||||||||||||||||||||||||||||||||||||||||||||
Àμö |
¢ºhDC:ºñÆ®¸ÊÀÌ º¹»çµÉ DC ¢ºX,Y,nWidth,nHeight:ºñÆ®¸ÊÀÌ º¹»çµÉ À§Ä¡ÀÇ Á»ó´Ü ÁÂÇ¥¿Í Æø, ³ÐÀÌ, ÀÌ °ªÀº ³í¸®Àû ÁÂÇ¥°ªÀÌ´Ù. ¢ºHSrcDC:º¹»çµÉ ºñÆ®¸ÊÀ» °¡Áö°í ÀÖ´Â DC. ¸¸¾à dwROP°¡ ¼Ò½º°¡ ÇÊ¿ä¾ø´Â °ªÀ̶ó¸é NULLÀÌ µÉ ¼öµµ ÀÖ´Ù. ¢ºXSrc,YSrc:º¹»çµÉ ºñÆ®¸ÊÀÇ ÁÂÃø »ó´Ü ÁÂÇ¥ÀÌ¸ç º¹»çó¿Í ¸¶Âù°¡Áö·Î ³í¸®Àû ÁÂÇ¥°ªÀÌ´Ù. ÀÌ °ªÀÌ 0ÀÏ °æ¿ì Àüü ºñÆ®¸ÊÀ» º¹»çÇÑ´Ù. º¹»ç¿øÀÇ Æø°ú ³ôÀÌ´Â º¹»çóÀÇ nWidth, nHeight°¡ Àû¿ëµÈ´Ù. ¢ºdwROP:ROPÄÚµå, Áï ºê·¯½¬¿Í º¹»ç¿ø, º¹»çóÀÇ ºñÆ®¸Ê »ö»óÀÌ ³í¸® ¿¬»êµÉ ¹æ¹ýÀ» ÁöÁ¤ÇÑ´Ù. ¸ðµÎ 256°³ÀÇ °¡´ÉÇÑ °ªÀÌ ÀÖÁö¸¸ ½ÇÁ¦·Î Àǹ̸¦ °®´Â ¾øÀº ´ÙÀ½ 15°³ÀÌ¸ç ¸ÅÅ©·Î »ó¼ö°¡ Á¤ÀǵǾî ÀÖ´Ù. ÀÌ ¿ÜÀÇ ROPÄڵ尡 ÇÊ¿äÇÒ °æ¿ì¿¡´Â »ó¼ö¸¦ Á÷Á¢ »ç¿ëÇØ¾ß ÇÑ´Ù. ¾Æ·¡ Ç¥¿¡¼ S´Â º¹»ç¿ø (Source), D´Â º¹»çó(Destination), P´Â ÆÐÅÏ(Pattern, Áï ºê·¯½¬)¸¦ ÀǹÌÇÑ´Ù.
|
||||||||||||||||||||||||||||||||||||||||||||||||
¸®ÅÏ | ÀÌ»ó¾øÀÌ ¼öÇàÇßÀ¸¸é 0ÀÌ ¾Æ´Ñ °ªÀ» ¸®ÅÏÇÏ°í ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ì 0À» ¸®ÅÏÇÑ´Ù. | ||||||||||||||||||||||||||||||||||||||||||||||||
¼³¸í |
ÇϳªÀÇ DC¿¡ ÀÖ´Â ºñÆ®¸ÊÀ» ´Ù¸¥ DC·Î º¹»çÇÏ´Â ºñÆ®¸Ê Àü¼ÛÇÔ¼öÀÌ´Ù. À̶§ µÎ DC´Â ȣȯµÇ¾î¾ß Çϳª ¸¸¾à »ö»ó Æ÷¸ËÀÌ È£È¯µÇÁö ¾ÊÀ» °æ¿ì BitBlt´Â º¹»ç¿øÀÇ »ö»ó Æ÷¸ËÀ» º¹»çóÀÇ Æ÷¸ä¿¡ ¸Â°Ô º¯°æÇÑ´Ù. ºñÆ®¸ÊÀ» ȸ鿡 Ãâ·ÂÇϱâ À§Çؼ´Â ¿ì¼± CreateCompatibleDCÇÔ¼ö¸¦ »ç¿ëÇÏ¿© ¸Þ¸ð¸® DC¸¦ ¸¸µé¾î¾ß Çϸç SelectObject ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© ¸Þ¸ð¸® DC¿¡ Ãâ·ÂÇÏ°íÀÚ ÇÏ´Â ºñÆ®¸ÊÀ» ¼±ÅÃÇÑ ÈÄ BitBlt·Î ½ÇÁ¦ ȸé DC¿¡ Àü¼ÛÇÑ´Ù. À̶§ ºñÆ®¸ÊÀº ¿øº» ±×´ë·Î º¹»ç°¡ µÇÁö¸¸ ROPÄڵ忡 µû¶ó ¹è°æ°ú ÇÔ²² ³í¸® ¿¬»êµÇ¾î º¯ÇüµÉ ¼ö´Â ÀÖ´Ù. º¹»ç¿øÀÇ ºñÆ®¸ÊÀº º¹»çóÀÇ ¸ÉÇθðµå¿¡ µû¶ó Å©±â°¡ Ä¿Áö°Å³ª ÀÛ¾ÆÁö±âµµ ÇÑ´Ù. ¸ðµç ÀåÄ¡°¡ BitBlt¸¦ Áö¿øÇÏ´Â °ÍÀº ¾Æ´Ï¹Ç·Î GetDeviceCaps¸¦ »ç¿ëÇÏ¿© BitBlt¸¦ ¾µ ¼ö ÀÖ´Â ÀåÄ¡Àΰ¡¸¦ È®ÀÎÇØ º¸¾Æ¾ß ÇÑ´Ù. ÀÌ ¿¹Á¦´Â ¸®¼Ò½º¿¡ Á¤ÀÇµÈ IDB_BITMAP ºñÆ®¸ÊÀ» ȸéÀÇ 0,0¿¡ Ãâ·ÂÇÑ´Ù.
#include "resource.h" LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam) { HDC hdc,MemDC; PAINTSTRUCT ps; HBITMAP MyBitmap, OldBitmap; int bx,by; BITMAP bit; switch(iMessage) { case WM_PAINT: hdc = BeginPaint(hWnd, &ps); MemDC=CreateCompatibleDC(hdc); MyBitmap=LoadBitmap(g_hInst, MAKEINTRESOURCE(IDB_BITMAP1)); OldBitmap=(HBITMAP)SelectObject(MemDC, MyBitmap); GetObject(MyBitmap,sizeof(BITMAP),&bit); bx=bit.bmWidth; by=bit.bmHeight; BitBlt(hdc, 0,0,bx,by,MemDC,0,0,SRCCOPY); SelectObject(MemDC,OldBitmap); DeleteObject(MyBitmap); DeleteDC(MemDC); EndPaint(hWnd, &ps); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return(DefWindowProc(hWnd,iMessage,wParam,lParam)); }MemDC ¸Þ¸ð¸® DC¿¡ IDB_BITMAP1À» ¼±ÅÃÇØ ³õ°í hdc·Î ºñÆ®¸ÊÀ» Àü¼ÛÇÏ¿´´Ù. ºñÆ®¸ÊÀÇ Å©±â´Â GetObject ÇÔ¼ö·Î ±¸ÇÒ ¼ö ÀÖ´Ù. ½ÇÇà °á°ú´Â ´ÙÀ½°ú °°´Ù.
ºñÆ®¸ÊÀ» Ãâ·ÂÇÏ´Â °úÁ¤ÀÌ ¹ø°Å·Ó´Ù¸é ´ÙÀ½ ÇÔ¼ö¸¦ È£ÃâÇÔÀ¸·Î½á ºñÆ®¸ÊÀ» °ð¹Ù·Î ȸéÀ¸·Î Àü¼ÛÇÒ ¼öµµ ÀÖ´Ù. void DrawBitmap(HDC hdc,int x,int y,HBITMAP hBit) { HDC MemDC; HBITMAP OldBitmap; int bx,by; BITMAP bit; MemDC=CreateCompatibleDC(hdc); OldBitmap=(HBITMAP)SelectObject(MemDC, hBit); GetObject(hBit,sizeof(BITMAP),&bit); bx=bit.bmWidth; by=bit.bmHeight; BitBlt(hdc,0,0,bx,by,MemDC,0,0,SRCCOPY); SelectObject(MemDC,OldBitmap); DeleteDC(MemDC); } hdcÀÇ (x,y)ÁÂÇ¥¿¡ hBit Àüü¸¦ Ãâ·ÂÇÑ´Ù. BitBlt´Â °°Àº DC°£ÀÇ ºñÆ®¸Ê Àü¼Û¿¡¸¸ »ç¿ëµÇ´Â °ÍÀº ¾Æ´Ï¸ç °°Àº DC³¢¸®µµ ºñÆ®¸Ê Àü¼Û¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½ ¿¹Á¦´Â ȸ鿡 ±×·ÁÁø µµÇüÀ» ¸¶¿ì½º ¹öÆ°À» ´©¸¥ À§Ä¡¿¡ º¹»çÇÑ´Ù. LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; switch(iMessage) { case WM_PAINT: hdc=BeginPaint(hWnd, &ps); SelectObject(hdc,GetStockObject(LTGRAY_BRUSH)); Ellipse(hdc,10,10,100,100); SelectObject(hdc,GetStockObject(GRAY_BRUSH)); Rectangle(hdc,50,50,200,150); EndPaint(hWnd, &ps); return 0; case WM_LBUTTONDOWN: hdc=GetDC(hWnd); BitBlt(hdc,LOWORD(lParam),HIWORD(lParam),100,100,hdc,40,40,SRCCOPY); ReleaseDC(hWnd,hdc); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return(DefWindowProc(hWnd,iMessage,wParam,lParam)); } WM_PAINT¿¡¼ µµÇüÀ» Ãâ·ÂÇØ ³õ¾ÒÀ¸¸é ¸¶¿ì½º ¿ÞÂÊ ¹öÆ°À» ´©¸£¸é BitBlt·Î ÀÌ µµÇüÀ» Ŭ¸¯ÇÑ À§Ä¡¿¡ º¹»çÇÑ´Ù. À̶§ º¹»çó¿Í º¹»ç¿øÀº µÑ ´Ù hdcÀÌ´Ù. º¹»ç¿øÀº hdcÀÇ ÀÛ¾÷ ¿µ¿ª (40,40)¿¡ ÀÖ´Â ³ôÀÌ 100, ³ÐÀÌ 100ÀÇ ºñÆ®¸ÊÀÌ¸ç º¹»çó´Â °°Àº ȸéÀÇ ¸¶¿ì½º·Î Ŭ¸¯µÈ À§Ä¡ÀÌ´Ù.
|
||||||||||||||||||||||||||||||||||||||||||||||||
Âü°íÇÔ¼ö | |||||||||||||||||||||||||||||||||||||||||||||||||
Ç÷¿Æû | 95ÀÌ»ó | ||||||||||||||||||||||||||||||||||||||||||||||||
ÂüÁ¶ | 6Àå ÂüÁ¶ |
written by http://www.winapi.co.kr
|