Изменение размера шахматной доски с помощью графики - PullRequest
1 голос
/ 16 апреля 2020

У меня есть проект для школы по созданию шахматной доски и фигур с использованием Graphics, который будет изменяться при изменении размера Form. Я хотел сделать 2 переменные:

  • new_width = currentFormWidth/startingFormWidth и
  • new_height = currentFormHeight/startingFormHeight

... и изменить размер, чтобы умножить эти ширину и высоту с цифрами, шириной и высотой доски, но поскольку я использовал Rectangle -s, я не могу умножить с помощью float. Любые другие предложения? Вот код и скриншот

 grafik = this.CreateGraphics();
        float new_width = this.Width / startingWidth;
        float new__height = this.Height / startingHeight;
        for (int i = 0; i < 8; i++)
        {
            for (int j = 0; j < 8; j++)
            {
                if ((j % 2 == 0 && i % 2 == 0) || (j % 2 != 0 && i % 2 != 0))
                    grafik.FillRectangle(new SolidBrush(Color.NavajoWhite), i * 65, j * 65, 65*new_width, 65*new__height);
                else if ((j % 2 == 0 && i % 2 != 0) || (j % 2 != 0 && i % 2 == 0))
                    grafik.FillRectangle(new SolidBrush(Color.DarkRed), i * 65, j * 65, 65 * new_width, 65 * new__height);
            }
        }

        /*************************BLACK FIGURES************************/
        //ROOKS
        grafik.DrawImage(Properties.Resources.figure, new Rectangle(0, 0, 65 * new_width, 65 * new__height), new Rectangle(65 * 2, 2, 65 , 65), GraphicsUnit.Pixel);
        grafik.DrawImage(Properties.Resources.figure, new Rectangle(65 * 7, 0, 65 * new_width, 65 * new__height), new Rectangle(65 * 2, 2, 65 , 65), GraphicsUnit.Pixel);
        //HORSES
        grafik.DrawImage(Properties.Resources.figure, new Rectangle(60, 0, 65 * new_width, 65 * new__height), new Rectangle(65 * 3, 2, 65 , 65), GraphicsUnit.Pixel);
        grafik.DrawImage(Properties.Resources.figure, new Rectangle(65 * 6, 0, 65 * new_width, 65 * new__height), new Rectangle(65 * 3, 2, 65, 65), GraphicsUnit.Pixel);
        //BISHOPS
        grafik.DrawImage(Properties.Resources.figure, new Rectangle(65 * 2, 0, 65 * new_width, 65 * new__height), new Rectangle(65 * 4, 2, 65 , 65), GraphicsUnit.Pixel);
        grafik.DrawImage(Properties.Resources.figure, new Rectangle(65 * 5, 0, 65 * new_width, 65 * new__height), new Rectangle(65 * 4, 2, 65, 65), GraphicsUnit.Pixel);
        //KING AND QUEEN
        grafik.DrawImage(Properties.Resources.figure, new Rectangle(65 * 4, 0, 65 * new_width, 65 * new__height), new Rectangle(0, 2, 65, 65), GraphicsUnit.Pixel);
        grafik.DrawImage(Properties.Resources.figure, new Rectangle(65 * 3, 0, 65 * new_width, 65 * new__height), new Rectangle(65, 2, 65, 65), GraphicsUnit.Pixel);
        //PAWNS
        for (int i = 0; i < 8; i++)
        {
            grafik.DrawImage(Properties.Resources.figure, new Rectangle(65 * i, 65,65*new_width, 65 * new__height), new Rectangle(65 * 5, 2, 65, 65), GraphicsUnit.Pixel);
        }
        /*************************WHITE FIGURES************************/
        //ROOKS
        grafik.DrawImage(Properties.Resources.figure, new Rectangle(0, 65 * 7, 65 * new_width, 65 * new__height), new Rectangle(65 * 2, 65, 65, 65), GraphicsUnit.Pixel);
        grafik.DrawImage(Properties.Resources.figure, new Rectangle(65 * 7, 65 * 7, 65 * new_width, 65 * new__height), new Rectangle(65 * 2, 65, 65, 65), GraphicsUnit.Pixel);
        //HORSES
        grafik.DrawImage(Properties.Resources.figure, new Rectangle(60, 65 * 7, 65 * new_width, 65 * new__height), new Rectangle(65 * 3, 65, 65, 65), GraphicsUnit.Pixel);
        grafik.DrawImage(Properties.Resources.figure, new Rectangle(65 * 6, 65 * 7, 65 * new_width, 65 * new__height), new Rectangle(65 * 3, 65, 65, 65), GraphicsUnit.Pixel);
        //BISHOPS
        grafik.DrawImage(Properties.Resources.figure, new Rectangle(65 * 2, 65 * 7, 65 * new_width, 65 * new__height), new Rectangle(65 * 4, 65, 65, 65), GraphicsUnit.Pixel);
        grafik.DrawImage(Properties.Resources.figure, new Rectangle(65 * 5, 65 * 7, 65 * new_width, 65 * new__height), new Rectangle(65 * 4, 65, 65, 65), GraphicsUnit.Pixel);
        //KING AND QUEEN
        grafik.DrawImage(Properties.Resources.figure, new Rectangle(65 * 4, 65 * 7, 65 * new_width, 65 * new__height), new Rectangle(0, 65, 65, 65), GraphicsUnit.Pixel);
        grafik.DrawImage(Properties.Resources.figure, new Rectangle(65 * 3, 65 * 7, 65 * new_width, 65 * new__height), new Rectangle(65, 65, 65, 65), GraphicsUnit.Pixel);
        //PAWNS
        for (int i = 0; i < 8; i++)
        {
            grafik.DrawImage(Properties.Resources.figure, new Rectangle(65 * i, 65 * 6, 65 * new_width, 65 * new__height), new Rectangle(65 * 5, 65, 65, 65), GraphicsUnit.Pixel);
        }
    }

screenshot of starting position

...