2

ここに問題の背景があります。EyeVisウォールセットアップを使用しています。次のリンクを参照してください: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;

だから今、私はこれを数学で解決しなければならないかもしれないと考え始めていますが、それは私の強みではありません。誰かがこれで私を助けるかもしれない何かへのアドバイスやポインタを持っていますか?

助けていただければ幸いです。よろしくエイドリアン

4

1 に答える 1

2

thiseを閉じるのを忘れて、すべての座標を共通の係数で除算することになりました。

于 2011-11-07T12:45:29.723 に答える