이전에 Delphi 용으로 소개한 적이 있는 폼(윈도우 또는 다이얼로그 모두)을 깍는 방법을 소개 하고자 합니다.
단, 이방법은 코드상의 길이는 짧으나 속도가 느림을 감안해야 합니다.
이유는 바로 GetPixel() 함수 때문이지요.

개선해야 하는 것은 GetDIBits() 함수를 이용해서 원본으로 사용할 비트맵의 픽셀배열을 가져와서 처리 하는 방법이 가장 빠른 방법이 될 것으로 보입니다.

일단 간단히 소개하자면.. 다음 코드를 참조 해 주시기 바랍니다.


shapingWindow() 함수로 넘기는 인자는 각각 윈도우 핸들, 폼을 깍기 위해 쓸 비트맵 , 넓이와 높이, 그리고 투명으로 처리할 색(32비트 컬러값)을 넘기면 됩니다.

간단히 MFC 에서 사용한다면 해당 Dialog 의 InitDialog() 구현부에 이렇게 쓸수 있습니다.
IDB_BACKGROUND 는 이미 res 에 배경으로 쓸 비트맵 이미지를 저장 해 둔 상태 이고,
DEF_APP_TRANS_COLOR 는 RGB 값으로 투명색 처리할 값을 #define 으로 미리 정의 한 상태 입니다.

Posted by 견족자K rageworx