缩小高分辨率坐标系?

时间:2011-01-27 10:37:07

标签: c# scaling dynamic dimensions

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

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

  

左,顶部,宽度,高度

所以在这个阶段我们有墙的大小,每个窗口的坐标都显示在那堵墙内。 我们需要做的是在控制器正在查看的监视器上显示墙的布局的表示。然后控制器将选择其中一个窗口(来自显示器),此窗口将在EyeVis墙上放大。

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

  1. 使用墙的尺寸在代码中创建面板。
  2. 使用坐标将每个窗口添加到此面板。
  3. 将主面板添加到表单并停靠面板
  4. 我认为这会自动缩放主面板中的所有面板,我们会看到布局,但在运行时停靠似乎没有我想象的那样?

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

    所以现在我开始认为这可能需要用数学来解决,这真的不是我的强项。有没有人有任何建议或指针可以帮助我解决这个问题?

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

1 个答案:

答案 0 :(得分:2)

忘了关闭那些,我们最后将所有坐标除以一个公因子。