Я пытаюсь рисовать квадраты на форме, используя список квадратных объектов.Рисование квадратов на окнах формы
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 # I не может найти проблему.
Вы никогда не используете «квадрат» в своем цикле в этом коде ..? –
Кроме того, вы должны отступать от тела вашего цикла for ('g.fillrectangle' должен быть отступом еще четырьмя пробелами) –