以下是该问题的一些背景知识。我们正在使用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;
所以现在我开始认为这可能需要用数学来解决,这真的不是我的强项。有没有人有任何建议或指针可以帮助我解决这个问题?
任何帮助表示赞赏! 问候 阿德里安
答案 0 :(得分:2)
忘了关闭那些,我们最后将所有坐标除以一个公因子。