我想用正方形對象列表在窗體上繪製正方形。在窗體上繪製正方形
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'應該縮進四個空格) –