更改椭圆的x / y坐标

时间:2017-01-14 21:30:33

标签: f# ellipse

作为一个更大项目的一部分,我试图弄清楚如何移动一个物体(在这种情况下是椭圆)。以下是我的代码中给我带来麻烦的部分:

//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 ()

该函数使用坐标列表来获取新的x和y值。这给了我语法错误“可能的重载”。我想我想做这样的事情:

fillEllipseform.X <- fsttuple

我究竟如何更改x / y坐标?当涉及椭圆时,.NET库非常受限于F#示例。

1 个答案:

答案 0 :(得分:3)

此处的问题是FillEllipse需要Brush,然后是4 int或4 float32。在你传递混合物的那一刻,所以它不确定选择哪个超载。

如果您选择float32而没有舍入(不确定vector3Dlist的类型是什么),那么工作版本将如下所示:

//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 ()