作为一个更大项目的一部分,我试图弄清楚如何移动一个物体(在这种情况下是椭圆)。以下是我的代码中给我带来麻烦的部分:
//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#示例。
答案 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 ()