2010-07-30 7 views
6

마우스 커서와 함께 이동하는 adorner가 있습니다. 그러나 마우스가 창 밖으로 나가 자마자 adorner가 잘립니다.WPF Adorner를 AdornerLayer 또는 Window 외부로 이동

adorner 레이어를 전체 화면으로 확장하거나 새로운 adorner 레이어를 만들 수 있습니까?

+0

안녕입니다! 교차 애플리케이션 드래그 앤 드롭 기능을 위해 마우스를 윈도우 바깥 쪽에서 움직이는 동일한 것을 사용하고 싶습니다. 이것에 대한 해결책을 찾았습니까? 아래에 언급 된 모든 기사는 동일한 응용 프로그램 윈도우 안의 adorner INSIDE 만 이동하는 것을 다룹니다. Thx. – Sebastian

답변

0

아마 너는 adorner 레이어로 무엇을하고 싶은지 잘 모르겠지만이 작업을 수행 할 수 있습니다. 내 솔루션은 윈도우가 포커스를 가지고있는 한 adorner가 마우스를 따라갈 수있게 해줍니다. 최종 목표가 무엇인지 알려주십시오. 더 나은 결과를 도울 수 있습니다.

내 아이디어는 원하는 컨트롤을 유지하기 위해 투명한 배경을 가진 전체 화면, 경계선없는 윈도우를 만드는 것입니다. 창의 투명하지 않은 부분은 그리드 안에 있습니다.

  1. 새 창을 만듭니다. WindowBorderStyle을 "None"으로, 너비와 높이를 "Auto"로, "WindowState"를 "Maximized"로 설정하십시오. (현재 IDE를보고 있지 않으므로 속성 이름이 약간 떨어져있을 수 있습니다.)

  2. 원래 창에서 그리드 (또는 사용중인 기본 컨테이너)의 XAML 코드를 복사하고, 그것을 새 창에 붙여 넣으십시오. 새 창에서 빈 눈금을 붙여 넣은 눈금으로 바꿔야합니다.

이렇게하면 전체 윈도우 주위에서 마우스를 따라 adorner 레이어를 만들 수 있습니다.

다시 정확한 목표를 여기에 게시하면 특정 요구에 더 적합한 답변을 줄 수 있습니다.

0

어쩌면 그는 선택 영역을 그려야합니다. 동일한 문제가 발생하지만 아래 링크를 볼 수 있습니다. http://www.codeproject.com/Articles/22952/WPF-Diagram-Designer-Part-2
배경이 투명 할 때 마우스 이벤트를 수신 할 수 없다는 것을 알았습니다. 광고주에게 배경을 주면 모든 것이 정상입니다.

protected override void OnRender(DrawingContext dc) { 
    dc.DrawRectangle(bg, null, new Rect(RenderSize)); 
    dc.DrawRectangle(Brushes.Red, null, new Rect(start, end)); 
} 

BG 브러시, 같은 단지

private Brush bg = new SolidColorBrush(Color.FromArgb(0x01, 0, 0, 0));