2017-01-14 11 views
3

大きなプロジェクトの一環として、私はオブジェクト(この場合は楕円)の移動方法を理解しようとしています。関数は、新しいxとyの値を取得する座標のリストを使用しています楕円のx/y座標を変更する

//updating the position of the ellipse 
let updatePoints (form : Form) (coords : vector3Dlist) dtheta showtime = 
    let mutable fsttuple = 0 
    let mutable sndtuple = 0 
    for i in 0..coords.Length-1 do 
    fsttuple <- (int (round (fst coords.[i]))) 
    sndtuple <- (int (round (snd coords.[i]))) 
    (fillEllipseform.Paint.Add(fun draw-> 
    let brush=new SolidBrush(Color.Red) 
    draw.Graphics.FillEllipse(brush,fsttuple,sndtuple,10.0f,10.0f))) 
    form.Refresh() 

:ここでは私のトラブルを与えている私のコードの一部です。これにより、構文エラー "possible overload"が発生します。私はこのようなことをするつもりだと思う:

fillEllipseform.X <- fsttuple 

どのように正確にx/y座標を変更するのですか?楕円の場合、.NETライブラリはF#の例で非常に制限されています。

+1

'Form'は 'X'と' Y'の性質を持っていません。 'Point'型の' Location'プロパティを持っています。試してみてください。fillEllformform.Location < - Point(fsttuple、sndtuple) ' – gradbot

+0

もっと慣用的であるため、ここで可変変数を削除することをお勧めします。 –

答えて

3

あなたの問題はFillEllipseBrush、それに続いて4 ints、または4 float32sです。現時点では混合物を渡しているので、どのオーバーロードを選択するかはわかりません。

あなたは(vector3Dlistの種類が何であるかわからない)float32を選択し、丸めなしであれば、作業バージョンは、次のようになります。

//updating the position of the ellipse 
let updatePoints (form : Form) (coords : vector3Dlist) dtheta showtime = 
    let mutable fsttuple = 0.0f 
    let mutable sndtuple = 0.0f 
    for i in 0..coords.Length-1 do 
    fsttuple <- fst coords.[i] 
    sndtuple <- snd coords.[i] 
    (fillEllipseform.Paint.Add(fun draw-> 
    let brush=new SolidBrush(Color.Red) 
    draw.Graphics.FillEllipse(brush,fsttuple,sndtuple,10.0f,10.0f))) 
    form.Refresh() 
関連する問題