2011-01-27 90 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