а также

дал метод, который рисует восьмиугольник, и он работает хорошо, если его размер 200 или выше

public static void FillOctagon(PaintEventArgs e, Color color, int x, int y, int width, int height)
{
     e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;

     var points = new []
     {
          new Point(((x + width) / 2) - (width / 4), y), //side 1
          new Point(x, ((y + height) / 2) - (height / 4)), //side 2
          new Point(x, ((y + height) / 2) + (height / 4)), //side 3
          new Point(((x + width) / 2) - (width / 4), y + height), //side 4
          new Point((x + width) - (width / 4), y + height), //side 5
          new Point(x + width, ((y + height) / 2) + (height / 4)), //side 6
          new Point(x + width, ((y + height) / 2) - (height / 4)), //side 7
          new Point((x + width) - (width / 4), y) //side 8
     };

     using (var br = new SolidBrush(color))
     {
          using (var gpath = new GraphicsPath())
          {
              gpath.AddPolygon(points);
              e.Graphics.FillPath(br, gpath);
          }
     }
}

protected override void OnPaint(PaintEventArgs e)
{
     base.OnPaint(e);
     FillOctagon(e, Color.DodgerBlue, 20, 20, 50, 50);
}

Ну, моя проблема в том, что если размер меньше 200 или ширина отличается от высоты, и наоборот, фигура деформируется. Моя цель - создать самоадаптирующуюся фигуру, которая сохраняет свою форму, когда ширина и высота меньше 200 или эта ширина отличается от высоты

Вот что происходит, если, например, я установил размер 50x50:

Ответы на вопрос(1)

Ваш ответ на вопрос