2

这是问题的一些背景。我们正在使用 EyeVis 墙设置,请参阅此链接:http ://www.eyevis.co.uk/

EyeVis 墙可以随时在墙上显示任意数量的“窗口”。我们查询墙壁的大小尺寸,然后查询它以获取当前显示在墙壁上的所有窗口的列表。这作为一组坐标返回,如下所示:

左、上、宽、高

所以在这个阶段,我们有了墙的大小,以及在墙内显示的每个窗口的坐标。我们需要做的是在控制器正在查看的监视器上显示墙壁布局的表示。然后控制器将选择一个窗口(从监视器),该窗口将在 EyeVis 墙上放大。

我尝试了一些事情,希望可能有一种简单的方法来实现这一点。我的一个想法是这样的:

  1. 使用墙的尺寸在代码中创建一个面板。
  2. 使用坐标将每个窗口添加到此面板。
  3. 将主面板添加到表单并停靠面板

我认为这会自动缩放主面板中的所有面板,我们会看到布局,但是在运行时停靠似乎不像我想象的那样?

这是我的代码:(使用 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;

所以现在我开始认为这可能必须用数学来解决,这真的不是我的强项。有没有人有任何建议或指向可能对我有帮助的东西?

任何帮助表示赞赏!问候阿德里安

4

1 回答 1

2

忘记关闭 thise,我们只是将所有坐标除以一个公因数。

于 2011-11-07T12:45:29.723 回答