这是问题的一些背景。我们正在使用 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;
所以现在我开始认为这可能必须用数学来解决,这真的不是我的强项。有没有人有任何建议或指向可能对我有帮助的东西?
任何帮助表示赞赏!问候阿德里安