Non-Rectangle Window in WPF

오늘 작성해본 WPF에서 직사각형이 아닌 창을 나타내는 코드이다. UI 부분이므로 모든 주요 코드는 XAML에서 작성되며 드레그했을시에 창이 이동되는 이벤트 처리는 Behind Code(.CS 파일)에서 작성하였다. 먼저 XAML 코드는 아래와 같다.


  
    
      
        
          
          
          
          
        
      

      
        
          
            
            
            
            
            
            
            
            
          
        
      
    

    

창을 원하는 모양으로 만들기 위해서 반드시 설정해야할 Window의 속성은 위의 코드에서 분홍색으로 나타낸 WindowStyle, AllowTransparency, Background 속성이다. 그리고 Path Element를 이용해 원하는 모양을 그려주면 끝이다. 참으로 간단하면서도 명확하다. 실행 결과는 다음과 같다.

드레그를 하면 창이 이동을 하는데 그와 관련된 코드는 다음과 같다. 마우스의 왼쪽 버턴을 눌렸을 경우 발생하는 이벤트이다.

void eventMouseLeftButtonDown(object sender, 
                              MouseButtonEventArgs e) {
     DragMove();
}

“Non-Rectangle Window in WPF”에 대한 6개의 댓글

  1. 고맙습니다. 도움이 많이 됩니다.
    윈도우에 대해 알파블랜딩 처리하는 방법도 위와 같이 쉽게 되나요?

  2. WPF의 윈도우가 아닌 일반 윈도우를 말씀하시는거라면, 알파블랜딩을 해주는 Win32 API가 따로 있습니다. 물론 쉽게 되구요~

  3. WPF의 윈도우에서 알파블랜딩이 가능한지 알고 싶어요.
    Win32로 알파블랜딩 처리는 가능하지만, WPF 윈도우를 MFC에서 사용한다면.. WPF에서 알파블랜딩 처리까지 해주면 깔끔하게 개발할 수 있을 듯 합니다.

  4. 위의 내용은 알파블랜딩이라기 보다는 윈도우 전체를 투명으로 설정하고 윈도우에 놓인 내용물만을 보이게 하는 것입니다. MFC 폼 위에 WPF 컨트롤을 올릴수있는 글을 봤는데, 위의 글과 적절하게 조합을 하면 원하시는 결과를 얻으실수있을것같습니다~

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다