본문 바로가기

C#,WPF

[WPF] 마우스 드래그 소스 분석


현재 완전한 분석을 못하였음.
열이블로그(http://shine10ee.blog.me/)에서 소스를 구해서 Transform 및 마우스 이벤트 관련 공부를 한다.
전체적인 흐름부터,,,


XAML 코드상으로는 별거없다. 이미지를 띄워주고, 몇개는 border로 감쌌다.
기본 속성외에 이벤트연결 전혀 없다.

주로 볼건.. 비하인드 코드. ^^;;;


private TranslateTransform TranslateTrans = new TranslateTransform();

 

 

 

Transfrom 생성자(Element element, Window window)

{

        Element.previewMouseDown += Element_PreviewMouseDown;

 
}

 

 

Element_PreviewMouseDown(object sender, MouseButtonEventArgs e)

{

 

        if(마우스가 클릭된 상태를 확인하여)    

        {

        Windows.PreviewMouseMove -= DragEvent;

 

               if(IsTransformation)

               {

                       Windows.PreviewMouseMove += TransformationEvent;

               }

        }

      

 

}

 

DragEvent(object sender, MouseEnventArgs e)

{

        if(Button 상태 확인)

          Point CurrentPoint = e.GetPosition(Window);

        //현재의 윈도우 좌표를 반환 받는다.         

 

        Drag(CurrentPoint);

 

}

 

Drag(Point point)

{

        //윈도우상에서 처음 좌표값의 역변환.

        FirstCoordinate = Element.TransformToVisual(Window).visual.Transform(FirstPoint);

       



        //객체를 기준으로 역변환 값을 윈도우상의 좌표값으로 변환

         Point translate = Element.TransPoint(FirstCoordinate, Window);

         Point Difference  new Point(point.X - Translate.X , point.Y - Translate.Y);

 

        //차이를 구해서

         TranslateTrans.X += Difference.X;

         TranslateTrans.Y += Difference.Y;

 


 

Element.RenderTransform = translateTrans;

 



}