bitblt로 투명배경 구현하기 ¶
ì�´ë¦„ì�´ì•¼ 멋지게 지었지만, 투명배경ì�´ë�¼ê³ í•´ë�„, 사실ì�€ ë°°ê²½ì�´ ë³´ì�´ê²Œ ì�´ë¯¸ì§€ë¥¼ ê²¹ì³�그린다는 뜻입니다.^^
아무� 만들지 않�것 같아서..미숙하나마~만들어 보았어요.^^
ë‘�가지 그림ì�„ 합치면 좋ì�„í…�ë�°, bitblt로 합치면 사ê°�형으로 합치니까 ë�™ê·¸ë�¼ë¯¸ë�¼ë�„ 그리는 ë‚ ì—”,
ë�™ê·¸ë�¼ë¯¸ì�˜ ë°°ê²½ì�´ ë’¤ì�˜ 그림ì�„ ì§€ì›Œë²„ë ¤ìš”.
그럼 어떻게 하면 ë� 까요? 답부터 보여드리ìž�ë©´ ì�´ë ‡ê²Œ~!
�그림과

�그림�

OR연산 해버리면..

ê°„ë‹¨í•˜ì£ ~?
(ORì—°ì‚°ì�´ëž€! 0or0=0 0or1=1 1or0=1 1or1=1 ì�´ë�˜ëŠ” 연산입니다. 다시ë§�í•´ 0ê³¼ 어떤값ì�„ or연산하면 어떤값ì�´ 그대로 나오게 ë�˜ì£ .^^
�.. 그럼 지금부터 아래� � 그림으로 연산� 시작해 봅시다~!^^
�개� 그림� DC가 준비�어 있어야 해요.^^
hdc_original

hdc_background

편�� 같� �기� 그림� 준비했습니다.^^
ê°�ê°�ì�˜ DCì—� 그림ì�„ ì„¤ì •í•˜ëŠ”ê±° 잊지마시구요.^^
그림� 가로� �기는 size_x 세로� �기는 size_y� �수로 하겟습니다.^^
ê·¸ë¦¬ê³ íˆ¬ëª…í™”ë� 색ìƒ�ì�€ RGBê°’ 255,0,255입니다.^^
ìš°ì„ ì•žìœ¼ë¡œ 사용ë� maskì—� 사용ë� DC를 만들어 봅시다.^^
ì�´ì œ 마스í�¬ë¥¼ 만들어 봅시다~!^^
배경으로 사용�는 색� �색� �었구요.^^ 그러니까 결과는..

ì�´ëŸ° ê°’ì�´ ì €ìž¥ë�©ë‹ˆë‹¤.^^
ì�´ì œ 우리 ì�´ì�œ 주ì�¸ê³µë’¤ì�˜ 배경색ì�„ ê²€ì�€ìƒ‰ìœ¼ë¡œ 바꾸어 ì¤�시다.^^
(AND연산�란? 0and0=0 0and1=0 1and0=0 1and1=1 다시�해 0과 and연산�하면 무조건 0으로! 1과 and 연산�하면 대입한값 그대로 나오는,

ì�´ë ‡ê²Œ ë�˜ê² 습니다.^^
아 �뽀..~>�<;;
í� í� .. ì§„ì •í•˜ê³ , ì�´ì œëŠ” ë°°ê²½ë�„ 처리를 해줘야 ê² ì£ ?
결과는..

ì�´ë ‡ê²Œ ë� 꺼예요.^^
ì�´ì œ 마지막 ì—°ì‚°! OR로 í•©ì³� 봅시다!~^^

�. 모� �났어요~!
í•ìƒ� 마지막ì—�는 ì“°ë ˆê¸°ëŠ” ì“°ë ˆê¸°í†µì—�~! ë’·ì •ë¦¬ëŠ” ê¹”ë�”히!!
휴~ 초보ë�¼ì„œ 그런지 ì œëŒ€ë¡œ ë�˜ì—ˆì�„ì§€ ëª¨ë¥´ê² ë„¤ìš”..^^
í˜„ì œ 사용중ì�¸ 소스ì�˜ê±¸ 조금 변형해서 복사한터ë�¼.^^ 실수가 없으면 ì¢‹ìœ¼ë ¨ë§Œ..
ìž�ìž�~ 틀린ì � 발견ë�˜ë©´ 즉시 ìˆ˜ì •í•´ì£¼ì„¸ìš”.^^
그럼~~ㅎ
-----
현재 필요한것�..
프로그램� 컴파�해주는 컴파�러� 아니요..
버그를 잡아주는 디버그� 아니다..
귀차니즘ì�„ 한방ì—� ë‚ ë ¤ì¤„ #include <부지런함> ì�´ 가능한 ì „ì²˜ë¦¬ê¸°.. 어디없나? 휴..
ê²°êµ ë§ˆìŠ¤í�¬ 비트맵ì�„ 메모리ìƒ�ì—�서 만들어서 한장 비트맵으로 투명 배경만들기하는 ê±° 였네 ã…¡.ã…¡;
ì�´ëŸ°ê±° ë§�ê³ ì¢Œìš°ë¡œ ìž�ë�™ìœ¼ë¡œ 바꿔서 ê·¸ë ¤ì£¼ëŠ” 방법ì�€ 엄나;;;
아무� 만들지 않�것 같아서..미숙하나마~만들어 보았어요.^^
ë�™ê·¸ë�¼ë¯¸ì�˜ ë°°ê²½ì�´ ë’¤ì�˜ 그림ì�„ ì§€ì›Œë²„ë ¤ìš”.



검�색� 000000000000000000000000�니까 (bit로 ㅎ 갯수가 맞나?)어떤색� or연산해� 그색 그대로 나온답니다.^^)
�개� 그림� DC가 준비�어 있어야 해요.^^


ê°�ê°�ì�˜ DCì—� 그림ì�„ ì„¤ì •í•˜ëŠ”ê±° 잊지마시구요.^^
그림� 가로� �기는 size_x 세로� �기는 size_y� �수로 하겟습니다.^^
ê·¸ë¦¬ê³ íˆ¬ëª…í™”ë� 색ìƒ�ì�€ RGBê°’ 255,0,255입니다.^^
~cpp HDC hdc_mask; HBITMAP bitmap_mask; hdc_mask= CreateCompatibleDC( hdc_background ); bitmap_mask=CreateBitmap(size_x, size_y, 1, 1, NULL); //mask로 ì‚¬ìš©í• í�‘ë°± 비트맵ì�„ ìƒ�성합니다~!'ã…‡')/ SelectObject(hdc_mask,bitmap_mask);ìž�~ í�‘ë°± 비트맵ì�„ 만들었습니다.^^
ì�´ì œ 마스í�¬ë¥¼ 만들어 봅시다~!^^
~cpp SetBkColor(hdc_original, RGB(255,0,255) ); BitBlt(hdc_mask,0,0,size_x,size_y,hdc_original,0,0,SRCCOPY);배경으로 사용ë� 색(RGB(255,0,255))ì�´ì™¸ì—�는 모ë‘� ê²€ì�€ìƒ‰ìœ¼ë¡œ 만들어 주었습니다.^^
배경으로 사용�는 색� �색� �었구요.^^ 그러니까 결과는..

ì�´ì œ 우리 ì�´ì�œ 주ì�¸ê³µë’¤ì�˜ 배경색ì�„ ê²€ì�€ìƒ‰ìœ¼ë¡œ 바꾸어 ì¤�시다.^^
~cpp SetBkColor(hdc_original, RGB(0,0,0)); SetTextColor(hdc_original, RGB(255,255,255)); BitBlt(hdc_original,0,0,size_x,size_y,hdc_mask,0,0,SRCAND);AND연산� 사용했어요.^^
(AND연산�란? 0and0=0 0and1=0 1and0=0 1and1=1 다시�해 0과 and연산�하면 무조건 0으로! 1과 and 연산�하면 대입한값 그대로 나오는,
íŠ¹ì • 부분만 골ë�¼ë‚´ê¸° 딱좋ì�€ 연산입니다.^^)
그래서 결과는..

아 �뽀..~>�<;;
í� í� .. ì§„ì •í•˜ê³ , ì�´ì œëŠ” ë°°ê²½ë�„ 처리를 해줘야 ê² ì£ ?
~cpp SetBkColor(hdc_background, RGB(255,255,255)); SetTextColor(hdc_background, RGB(0,0,0)); BitBlt(hdc_background,0,0,size_x,size_y,hdc_mask,0,0,SRCAND);ê¶�ê·¹ì�˜ ANDì—°ì‚°.. ë˜� ì‹œì „ë�˜ì—ˆìŠµë‹ˆë‹¤.^^
결과는..

ì�´ì œ 마지막 ì—°ì‚°! OR로 í•©ì³� 봅시다!~^^
~cpp BitBlt(hdc_background,0,0,size_x,size_y,hdc_original,0,0,SRCPAINT);

í•ìƒ� 마지막ì—�는 ì“°ë ˆê¸°ëŠ” ì“°ë ˆê¸°í†µì—�~! ë’·ì •ë¦¬ëŠ” ê¹”ë�”히!!
~cpp DeleteDC(hdc_mask); DeleteObject(bitmap_mask);잊지 마세요.^^
í˜„ì œ 사용중ì�¸ 소스ì�˜ê±¸ 조금 변형해서 복사한터ë�¼.^^ 실수가 없으면 ì¢‹ìœ¼ë ¨ë§Œ..
ìž�ìž�~ 틀린ì � 발견ë�˜ë©´ 즉시 ìˆ˜ì •í•´ì£¼ì„¸ìš”.^^
현재 필요한것�..
프로그램� 컴파�해주는 컴파�러� 아니요..
버그를 잡아주는 디버그� 아니다..
귀차니즘ì�„ 한방ì—� ë‚ ë ¤ì¤„ #include <부지런함> ì�´ 가능한 ì „ì²˜ë¦¬ê¸°.. 어디없나? 휴..
ì�´ëŸ°ê±° ë§�ê³ ì¢Œìš°ë¡œ ìž�ë�™ìœ¼ë¡œ 바꿔서 ê·¸ë ¤ì£¼ëŠ” 방법ì�€ 엄나;;;
엮어가기 ¶
(beonit)ë ˆë°�즈프로ì �트/í”„ë¡œí† íƒ€ìž…ì—�서 MFC기반으로 ë�”블 버í�¼ë§�ì�„ í�¬í•¨í•´ì„œ 간단하게 í�´ëž˜ì‹± í•´ 보았습니다.
----
프로그래�분류
----
프로그래�분류









