2011-01-27 9 views
2

ここに問題の背景があります。 http://www.eyevis.co.uk/高解像度の座標を縮小しますか?

EyeVisウォールには、いつでも壁に何個もの「ウィンドウ」が表示されます。私たちは壁にサイズの次元を問い合わせ、それから壁に現在表示されているすべてのウィンドウのリストを問い合わせます。これは次のように座標のセットとして戻ってくる:

左、上、幅、高さ

ので、この段階で、私たちは壁の大きさ、との座標を持っています各ウィンドウはその壁内に表示されます。 私たちがする必要があるのは、コントローラが表示しているモニタに壁のレイアウトの表示を表示することです。コントローラーは、(モニターから)ウィンドウの1つを選択し、このウィンドウがEyeVisウォールで拡大されます。

これを達成するための簡単な方法があることを願って、私はいくつかのことを試しました。私が持っていた1つのアイデアはこれでした:

  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/3で除算することと同じです)。 –

関連する問題