2008/02/11

내 멋대로 윈도우 모양 만들기

예전에는 윈도우를 원하는 모양으로 만들기 위해 원하는 모양의 마스크 영상을 만들어 영상의 외곽포인트를 구해 SetWindowRgn를 이용하였는데 이제는(windows 2000 이상) 마스크 영상과 SetLayeredWindowAttributes 함수 만으로 간단하게 해결 할 수 있다.

아래 이미지는 예제 프로그램을 실행하였을때의 실행화면 이다.

사용자 삽입 이미지


마스크 영상으로는 MS Office 2007 에서 따온 영상을 약간 수정하였다.

사용자 삽입 이미지

메인 폼 위에 이미지 컨트롤을 올리고 마스크 영상을 불러들인 후 함수를 호출해주는 것으로 작업이 끝난다.
아래 코드는 폼이 생설할때 수행하는 코드이다.

this->Color = RGB(1, 1, 1);
SetWindowLong(this->Handle, GWL_EXSTYLE,
GetWindowLong(this->Handle, GWL_EXSTYLE) | WS_EX_LAYERED);
::SetLayeredWindowAttributes(this->Handle,
RGB(1, 1, 1), 0, LWA_COLORKEY);


위의 코드 중에 RGB(1, 1, 1)이 투명 처리를 하기 위한 색상으로 마스크 영상의 투명 부분의 색상을 넣어주면 된다.



Original Post : http://neodreamer-dev.tistory.com/57

No comments :

Post a Comment