[[TableOfContents]] = 소개 = * MFC 의 경우다. * 우리가 비트맵을 불러다 쓸때 늘 사각형 모양으로 불러다 쓴다. 하지만 불러다 쓰고 싶은 모양이 사각형이 아니지만 본의 아니게 배경색까지 따라 찍힌다. 이 때 사용한다. * 비트맵 불러다 쓸때..(MFC에서) 마스크 써서 배경 처리하는걸 래스터 연산 생각하며 따지는게 귀찮아서 담엔 보고 하려고 만든다..;; == 원리1 == * 래스터 연산을 이용한다. 디지털 공학 시간에 배우는 OR, AND, XOR 등을 비트맵에서도 적용할 수 있다. 여기서는 XOR 은 쓰지 않아도 된다. * 보통 비트맵을 불러올 때 마지막에 이부분이 있다. (코드의 다른 설명은 추가하지 않겠음. 논의를 벗어나므로..) {{{~cpp dc.BitBlt(0, 0, 100, 100, &memDC, 0, 0, SRCCOPY); }}} 여기서 SRCCOPY 라는 부분이 있는데 이게 래스터 연산자(Rastor OPeration) 이다. 종류는 다음과 같다. || SRCCOPY || 그대로 복사 || || SRCPAINT || OR 연산 || || SRCAND || AND 연산 || || SRCINVERT || XOR 연산 || 3비트 짜리 비트맵 코드(는 없겠지만...; )를 예로 든다면... 검은색은 000 이고 흰색은 111 이다. 그리고자 하는 비트맵이 101 이라면, 검은색과 원본을 AND 연산하면 {{{~cpp 000 101 --- 000 }}} 이 되어 원본이 무시된다. 이것을 정리하면 || 원본과 상대할(?) 색 || SRCAND(AND)의 결과 || SRCPAINT(OR)의 결과 || || 검은 색 || 검은 색 || 무변 || || 흰색 || 무변 || 흰색 || 이렇게 된다. 다시 본론으로 돌아가서...우리가 하고 싶은 일은 그림의 배경을 잘라 내고 원하는 모양만을 밑그림에 붙이는 것이다. 따라서 우리는 배경은 무시되고 원하는 부분의 밑그림이 무시되어야 한다.[[BR]] <원본 그림> http://165.194.17.15/~wiz/data/zpwiki/originalbmp.bmp <밑 그림> http://165.194.17.15/~wiz/data/zpwiki/bgbmp.bmp <원하는 결과> http://165.194.17.15/~wiz/data/zpwiki/resultbmp.bmp [[BR]] 원본 그림에 흰색과 검은 색으로 그려진 그림(마스크)을 밑그림에 잘 연산시켜 순서를 잘 맞춰 그리면 원하는 그림이 나오는 것이다. 마스크는 밑의 두개중 아무거나 사용한다. == 원리2 == * 그림은 ''검은색을 만날 땐 OR 연산''에 '''강'''하고 ''흰색을 만날 땐 AND 연산''에 '''강'''하다~!! B) * 반면에 ''검은색을 만날 땐 AND 연산''에 '''약'''하고 ''흰색을 만날 땐 OR 연산''에 '''약'''하다... :( * 따라서 무시될 부분은 약하고 보일 부분은 강해지도록 배경색을 정하고 마스크를 정한다. * 우리는 그림이 이기고~! 그림 외의 부분은 밑그림이 이겨야 한다~! 1. 밑그림을 먼저 깔아놓고... 1. 그 위에 배경자리는 밑그림이 이기고 그림자리는 그림이 이기도록.. 마스크의 색깔을 정한다. 1. 이제 다음과 같이 된다. === 마스크 1 사용 === * 사용하는 마스크 http://165.194.17.15/~wiz/data/zpwiki/andmask.bmp * 이때 그림 주변의 배경 색깔 http://165.194.17.15/~wiz/data/zpwiki/orbmp.bmp ==== 순서 ==== 1. 밑그림을 찍는다. 1. 마스크를 '''SRCAND''' 연산 한다. 1. 그림을 '''SRCPAINT''' 연산 한다. === 마스크 2 사용 === * 사용하는 마스크 http://165.194.17.15/~wiz/data/zpwiki/ormask.bmp * 이때 그림 주변의 배경 색깔 http://165.194.17.15/~wiz/data/zpwiki/andbmp.bmp ==== 순서 ==== 1. 밑그림을 찍는다. 1. 마스크를 '''SRCPAINT''' 연산 한다. 1. 그림을 '''SRCAND''' 연산 한다. ---- ["창섭"]