본문 바로가기

TransparentBlt3

MFC-CImage 클래스 기존의 이미지를 출력하는 방식이 아닌 MFC에서 추가된 CImage를 사용해 보자. 소스 코드 자체가 딱히 어려운 부분은 없다. 마지막에 흑백으로 출력 하는 부분이 있는데, RGBtoGray라는 부분은 inline으로 선언되 있다. 흑백으로 변경하는 알고리즘은 거의 공식화 되어 있다고 하니 그냥 단순하게 기억해 두자. CImage에서는 bmp뿐만 아니라 jpg, gif, png등이 있다고 한다. CImage를 사용하기 위해서는 반드시 #include 를 해 주어야 한다. // 실행 화면 단점은, 이미지에 대해서 모든 픽셀을 변경해서 다시 픽셀을 설정해 주기 때문에, 예제 처럼 WM_PAINT에서 매번 처리하기에는 비효율 적이다. WM_CREATE나 또는 한번만 불러오게 변경하여, 추가 이미지를 생성하여 .. 2010. 5. 17.
MFC-비트맵 띄우기 MFC의 비트맵도 API와 매우 흡사하다. 일단 비트맵 리소스를 하나 추가하자. 다음과 같은 비트맵이 있다고 하였을 때, 이제 이 비트맵을 가지고 띄우는 일과, 투명값, 알파값, 사이즈 조정등을 하나하나 해보도록 하자. 기본적으로 리소스에 존재하는 이미지를 띄우는 개념에 대해서는 구지 설명하지 않고, 소스 위주로 보도록 하자. 먼저 프로젝트에 WM_PAINT 메시지를 하나 만들자. 기본 적인 설명은 주석을 달아 놓았다. 큰 구조 자체는 변화가 없다. MemDC를 생성하고 그 안에 Bitmap을 넣은 후 DC에 MemDC를 복사 하는 방법이다. BitBlt의 인자는 출력할 윈도우 좌표 x,y 비트맵의 폭과 높이. 출력할 비트맵을 저장한 메모리 DC의 주소 메모리 DC에 들어 있는 비트맵의 시작 좌표 적용할.. 2010. 5. 16.
API-알파값(비트맵 이미지 투명화) 사실 예전엔 알파값을 사용하기 위해 매우 복잡한 연산을 사용(비트연산)하였으나, 지금은 TransparentBlt를 함수를 사용하면 1줄로 아주 간편하게 특정 값에 대한 수치를 제거 할 수 있다. 다음과 같은 이미지에 붉은값( 255, 0, 0 )을 투명처리 하고 싶다고 하자. 흔히들 알파값, 컬러키 라고 많이 불리우는데, 예제 소스를 보면 TransparentBlt( hdc, 0, 0, 48*12, 48, MemDC, 0, 0, 48*12, 48, RGB(255, 0, 0) ); 를 사용해서 마지막 인자값으로 RGB(255,0,0)을 준것을 알 수 있다. 이렇게 하게 되면 이미지를 띄우던중 RGB값이 동일하다면, 그 동일한 값에 대해서 투명처리를 해주게 되니 매우 쉽게 투명값을 먹을 수 있다. BitB.. 2010. 5. 10.