Вот некоторая предыстория проблемы. Мы работаем с настройкой стены EyeVis, см. Эту ссылку: http://www.eyevis.co.uk/
Стена EyeVis может иметь любое количество «окон», отображаемых на стене в любое время. Мы запрашиваем у стены размеры ее размеров, а затем запрашиваем список всех окон, которые в данный момент отображаются на стене. Это возвращается как набор координат следующим образом:
Слева, сверху, ширина, высота
Итак, на этом этапе у нас есть размер стены и координаты каждого окна, отображаемого внутри этой стены.
Что нам нужно сделать, это отобразить представление макета стены на мониторе, который просматривает контроллер. Затем контроллер выберет одно из окон (с монитора), и это окно будет увеличено на стене EyeVis.
Я пробовал несколько вещей в надежде, что может быть простой способ добиться этого. У меня была одна идея:
- Создать панель в коде с размерами стены.
- Добавьте каждое окно на эту панель, используя координаты.
- Добавление главной панели в форму и закрепление панели
Я думал, что это автоматически изменит масштаб всех панелей внутри главной панели, и мы увидим макет, но стыковка во время выполнения не выглядит так, как я себе представлял?
Это код, который у меня был: (с использованием C #)
Panel mainPanel = new Panel();
mainPanel.Width = eyeVisWallWidth;
mainPanel.Height = eyeVisWallHeight;
foreach (Window thisWindow in windowList)
{
Panel newWindow = new Panel();
newWindow.Top = thisWindow.windowTop;
newWindow.Width = thisWindow.windowWidth;
newWindow.Height = thisWindow.windowHeight;
newWindow.Left = thisWindow.windowLeft;
Label newLabel = new Label();
newLabel.Text = thisWindow.windowID.ToString() + ":" + newWindow.Height + ":" + newWindow.Width;
newWindow.Controls.Add(newLabel);
newWindow.BorderStyle = BorderStyle.FixedSingle;
mainPanel.Controls.Add(newWindow);
}
this.panel1.Controls.Add(mainPanel);
mainPanel.Dock = DockStyle.Fill;
mainPanel.Anchor = AnchorStyles.None;
Так что теперь я начинаю думать, что это может быть решено с помощью математики, которая на самом деле не моя сильная сторона. У кого-нибудь есть совет или указатель на что-то, что может мне помочь в этом?
Любая помощь приветствуется!
С уважением
Адриан