Динамическое расположение объектов на панели - PullRequest
0 голосов
/ 15 апреля 2020

Итак, я извлекаю изображения с веб-сайта и сохраняю их в MostUsedHeroesAndImages. Затем я пытаюсь отобразить их на панели с помощью динамического c создания картинок. Как мне запрограммировать его так, чтобы создание коробок с картинками начиналось слева = 0 сверху = 25, а затем, когда отображалось 10 изображений (с 50 пикселями между изображениями), начиналось слева = 0 сверху = 200, чтобы показать еще 10 изображений и так на создание сетки изображений? В настоящее время у меня есть этот код, который отображает все мои изображения в виде прямой линии, идущей слева направо, без зазора между ними. Я попытался установить начальную точку, но тогда он просто сохраняет все картинки поверх друг друга. О том, как сделать промежуток между каждым изображением и сделать так, чтобы оно пропускало строку, когда было показано 10, я понятия не имею.

public void RunMeta()
    {

        foreach(var mostPickedHero in FetchDataFromDota2Site.MostUsedHeroesAndImages)
        {
            PictureBox temp = new PictureBox();
            temp.ImageLocation = mostPickedHero.ImageSource;
            temp.SizeMode = PictureBoxSizeMode.StretchImage;
            temp.Left = temp.Width * panel1.Controls.Count;
         //   temp.Location = new System.Drawing.Point(left, top);
            panel1.Controls.Add(temp);
        }

    } 

1 Ответ

1 голос
/ 15 апреля 2020

Вы можете использовать FlowLayoutPanel вместо простой панели (panel1). Вам нужно будет только установить Margin на элементах управления PictureBox, чтобы сделать пробелы. Это готовое к использованию решение, не требующее кода logi c для переноса изображений. Он также работает всякий раз, когда размер панели изменяется.

Поведение FlowLayoutPanel по умолчанию заключается в горизонтальном расположении элементов управления слева направо (см. FlowDirection ) и автоматическом переносе на новую строку (см. ). WrapContents ).

Имейте в виду, что когда число дочерних элементов управления (ваших изображений) очень сильно увеличивается, FlowLayoutPanel может стать медленным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...