2016-11-26 79 views
0

我想實現在鼠標點擊位置的中心繪製一個矩形。爲此,我覺得我需要獲得x和y座標作爲int。如何獲得mouseClick的x和y座標

(這是編輯的代碼和e.Xe.Y是解決這一問題)

let mouseClick (e: MouseEventArgs) = 
    let x = e.X 
    let y = e.Y 
    let coords = [|System.Drawing.Point((x-10),(y-10)); 
       System.Drawing.Point((x-10),(y+10)); 
       System.Drawing.Point((x+10),(y+10)); 
       System.Drawing.Point((x+10),(y-10)); 
       System.Drawing.Point((x-10),(y-10))|] 
    window.Paint.Add(fun e -> e.Graphics.DrawLines(pen, coords)) 

window.MouseClick.Add mouseClick 

我使用e.Location屬性不起作用這是有道理的,因爲一些擴展當我打印出來然後試圖它打印「x =(某個數字)y =(某個數字)」

任何人都可以幫助我獲得作爲int的x和y座標嗎?

+5

您是否試過閱讀[documentation](https://msdn.microsoft.com/en-us/library/system.windows.forms.mouseeventargs(v = vs.110).aspx#Anchor_3)?有'eX'和'eY'(即使不是'e.Location'也是類型'Point',它也具有'X'和'Y'屬性) – Sehnsucht

+0

我不清楚的是,'mouseClick '有類型'MouseEventArgs - > Point []',但在最後一行中,您將它用作類型'Point []'的值。你不忘記應用它的一些論點? – Sehnsucht

+0

我已經編輯我的代碼到其他東西。 Sehnsucht。請和我一起裸照。我在兩天前進入了F#和winforms。仍試圖找出基本知識。 但是新代碼也會導致問題。這確實在所需的位置繪製了一個矩形,但我必須最小化和最大化窗口才能使窗口刷新。但我想這是另一個問題的問題。 – Nulle

回答

4

正如評論指出,爲了從一個MouseEventArgs你只需要訪問它的XY性質
這只是反映了關於你的編輯Location.XLocation.Y性能也e

可用鼠標位置和你的額外評論,我認爲你做錯了一個新的Paint處理程序與每次點擊,你只需要畫(這可能仍然需要一個Refresh在某些點雖然)

let mouseClick (e: MouseEventArgs) = 
    let x = e.X 
    let y = e.Y 
    let coords = [| System.Drawing.Point(x - 10, y - 10) 
        System.Drawing.Point(x - 10, y + 10) 
        System.Drawing.Point(x + 10, y + 10) 
        System.Drawing.Point(x + 10, y - 10) 
        System.Drawing.Point(x - 10, y - 10) |] 

    // maybe use instead of let ? 
    let g = window.CreateGraphics() 
    g.Graphics.DrawLines(pen, coords) 

window.MouseClick.Add mouseClick