2012-11-14 2 views
0

마우스를 클릭 할 때 원과 직사각형을 그리려고하므로 마우스 클릭의 x와 y 코드가 있습니다.커서가있는 곳을 그리기

저는 인터넷에서 C#에서 Margin으로 만 수행 할 수 있고 Java에서는 원점 또는 이와 유사한 것이 없다고 검색했습니다. x 및 y를 생성자에게 제공 할 수 있습니다.

지금 나는이 권리를 설정하기 위해 노력하고있어하지만 난 제대로이를 계산하는 방법을 알아낼 수 없습니다 :

을이에 따르면

http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.margin%28v=vs.95%29.aspx 

rec.Margin = new Thickness(0, 0,0, 0); 

누군가가 나를 도울 수 있습니까? 아니면 이것으로는 불가능합니까?

+0

캔버스를 사용하여 FrameworkElements 및 컨트롤을 절대 좌표로 배치 할 수 있습니다. OnRender 메서드를 재정의 할 수도 있습니다. – strmstn

+0

이 WinForms 또는 WPF입니까? – Groo

답변

1

이 WPF 또는 Windows Forms입니까? WPF 마우스 이벤트 args에는 전달하는 컨트롤에 상대적인 마우스 좌표를 알려주는 GetPosition(UIElement) 메서드가 있습니다. 따라서 MyCanvas이라는 System.Windows.Controls.Canvas에 사각형을 그리려면 을 e.GetPosition(MyCanvas)이 반환하여 사각형을 배치 할 수 있습니다 . 스펜서에

void MyCanvas_MouseDown(object sender, MouseButtonEventArgs e) 
{ 
    Point ClickPoint = e.GetPosition(MyCanvas); 
    Rectangle Rectangle = new Rectangle(); 
    System.Windows.Controls.Canvas.SetTop(Rectangle, ClickPoint.Y) 
    System.Windows.Controls.Canvas.SetLeft(Rectangle, ClickPoint.X) 
    MyCanvas.Children.Add(Rectangle); 
} 
+0

감사합니다. 사실 그것은 WPF 터치 테이블 (표면)이지만, 나는 원리가 같거나가 같다고 생각합니까? – user1007522

+0

잘 모르겠습니다. 그것은 당신이 당신의 질문에 게시해야하는 매우 관련성있는 정보입니다. –

0
void MyCanvas_MouseDown(object sender, MouseButtonEventArgs e) 
{ 
    Point ClickPoint = e.GetPosition(MyCanvas); 
    Rectangle Rectangle = new Rectangle(); 
    System.Windows.Controls.Canvas.SetTop(Rectangle, ClickPoint.Y) 
    System.Windows.Controls.Canvas.SetLeft(Rectangle, ClickPoint.X) 
    MyCanvas.Children.Add(Rectangle); 
} 

감사 :

다음은 예입니다.

관련 문제