Я не знаю, как получить эти прямоугольники таким образом.
Лучшее, что вы можете сделать, это создать класс Rectangle и наследовать его от Control или UserControl.Затем переопределите защищенный метод OnPaint (...).Например:
public class FilledRectangle : UserControl
{
private readonly float x, y, w, h;
// also the brush here
public FilledRectangle(float x, float y, float w, float h)
{
this.x = x;
// ...
}
protected override void OnPaint(PaintEventArgs e) // not sure about the event args type name
{
e.Graphics.FillRectangle(this.myBrush, this.x, this.y, this.w, this.h);
}
}
Теперь вы можете просто добавить объект этого типа в коллекцию Controls следующим образом:
Controls.Add(new FilledRectangle(...));
При таком подходе вы можете легко создать коллекцию прямоугольникаобъекты и заставить их вести себя так, как вы хотите.
Обратите внимание, что примеры, которые я написал выше, написаны на C #, но не должно быть слишком сложно перенести их на F #.Единственная причина, по которой я этого не делаю, в том, что я не очень знаком с ее синтаксисом.Ваш вопрос относится не к F #, а к .NET.
Также обратите внимание, что, поскольку он был прокомментирован Гансом, событие Paint не сработает, пока вы не вызовете Invalidate ().