2011-01-27 111 views
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; 

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

任何帮助表示赞赏! 关注 阿德里安

回答

2

忘了关闭这个,我们结束了所有的坐标由一个共同的因素分开。

+0

+1;绝对是正确的答案,所以不需要关闭这个问题。 “缩放”=乘。你缩放到一个更小的尺寸,所以你乘以一个小于1的值(例如0.6)。你把所有东西均匀地缩放,所以把所有东西都乘以相同的值。除以大于1的数值在数学上等价(乘以0.6等于除以5/3rds)。 – 2011-11-07 12:52:36