2012-11-14 37 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

您可以使用Canvas以絕對座標定位FrameworkElements和Controls。您也可以重寫OnRender方法。 – strmstn

+0

這是WinForms還是WPF? – Groo

回答

1

這是WPF還是Windows窗體? WPF鼠標事件參數有一個GetPosition(UIElement)方法,它會告訴您相對於您傳入的控件的鼠標座標。因此,如果您要在System.Windows.Controls.Canvas上繪製一個名爲MyCanvas的矩形,則可以使用由e.GetPosition(MyCanvas)返回的Point來放置矩形。

下面是一個例子:

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); 
} 

由於斯賓塞。