【问题标题】:Scaling down a high resolution set of co-ordinates?缩小一组高分辨率坐标?
【发布时间】:2011-06-16 11:03:23
【问题描述】:

这里是问题的一些背景。我们正在使用 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;

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

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

【问题讨论】:

    标签: c# scaling dynamic dimensions


    【解决方案1】:

    忘记关闭这个了,我们只是将所有坐标除以一个公因数。

    【讨论】:

    • +1;绝对是正确的答案,因此无需关闭问题。 “缩放” = 乘法。您正在缩放到更小的尺寸,因此您乘以小于 1 的值(例如 0.6)。您均匀地缩放所有内容,因此将所有内容乘以相同的值。除以大于 1 的值在数学上是等价的(乘以 0.6 等于除以 5/3)。
    猜你喜欢
    • 1970-01-01
    • 2015-07-16
    • 2018-01-22
    • 2017-11-25
    • 1970-01-01
    • 1970-01-01
    • 2016-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多