我想用正方形对象列表在窗体上绘制正方形。在窗体上绘制正方形
let listOfSquares = ResizeArray()
type square(x : float, y : float) =
let x = x
let y = y
let length = 50
let height = 50
我使用下拉菜单来创建上点击一个正方形,然后我还有一个菜单按钮,无效的形式
let square = create.DropDownItems.Add("Square")
let invalidate = file.DropDownItems.Add("Invalidate")
square.Click.Add(fun _ -> listOfSquares.Add(new square(50.0, 50.0)))
invalidate.Click.Add(fun _ -> form.Invalidate())
我遇到的问题是,OnPaint方法不画正方形,但每次你点击菜单按钮的方块都会添加到列表中。
override form.OnPaint e =
let g = e.Graphics
for square in listOfSquares do
g.FillRectangle(Brushes.Aqua, 300, 150, 48, 48);
我试图手动值添加到列表中,然后运行像下面
override form.OnPaint e =
listOfSquares.Add(50,50)
let g = e.Graphics
for square in listOfSquares do
g.FillRectangle(Brushes.Aqua, 300, 150, 48, 48);
其中一期工程,我相信这个问题是在form.invalidate的程序,但即时通讯相当新的F#我无法找到问题。
在这段代码中,你实际上从来没有在循环中使用'square'。 –
此外,你应该缩进你的for循环的正文('g.fillrectangle'应该缩进四个空格) –