2016-11-26 69 views
0

私は、マウスクリック位置の中心の周りに長方形を塗りつぶしようとしています。そのために私はxとyの座標をintとして取得する必要があると感じます。私はいくつかは、私はそれを印刷するとき以来、拡張することは理にかなっている動作しませんe.Locationプロパティを使用してみましたmouseClickのx座標とy座標を取得する方法

(これは、編集コードとe.Xまたはe.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 

"x =(ある数値)y =(ある数値)"を出力します。

xとyの座標をintとして取得するのに手助けができますか?あなたは、単にそれだけで、あなたの編集についてe

でも利用可能Location.XLocation.Yの特性を反映したXY性質
にのアクセスする必要がMouseEventArgsからマウスの位置を取得するには、コメントで述べたように

+5

[documentation](https://msdn.microsoft.com/en-us/library/system.windows.forms.mouseeventargs(v = vs.110).aspx#Anchor_3)を読んでみましたか? 'eX'と' eY'があります( 'e.Location'が' X'と 'Y'プロパティも持つ' Point'型のものでなくても) – Sehnsucht

+0

私は明確に分かりませんが、 'は' MouseEventArgs - > Point [] 'とタイプしていますが、最後の行では' Point [] '型の値として使用しています。あなたはそれにいくつかの議論を適用することを忘れないでください? – Sehnsucht

+0

私のコードを他のものに編集しました。 Sehnsucht。私と一緒に裸にしてください。私は2日前にF#とwinformsに行きました。まだ基本を理解しようとしています。 ただし、新しいコードでも問題が発生します。これは実際には希望の位置に矩形を描画しますが、ウィンドウを更新するためにはウィンドウを最小化して最大化する必要があります。しかし、私はそれが別の質問の問題だと思います。 – Nulle

答えて

4

とあなたの追加のコメントは、私はあなたがそれぞれのクリックで新しい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 
関連する問題