0

第一次在 GUI 项目上工作.. 第一次在 Windows 上工作,所以如果这是一个真正的菜鸟问题,请提前道歉。我正在从 vb.net WPF 开始逐步进入 Windows 编程。在 Visual Studio Express 2012 中工作。

我正在尝试弄清楚如何使用窗口本身来缩放窗口中的所有元素。例如,我会创建一个窗口,比如 1280x720,并在窗口中放置一些图像。说一个在顶部,一个在角落。(这是一个基本的基于媒体的应用程序)当我调整那个窗口的大小时,我希望整个窗口随之缩放,所以如果窗口变大,图像 1 和 2 会变大,但是这必须成比例地发生,这样如果我做窗口在一个方向上要大得多,一个图像不能与另一个重叠。想象一下窗口是一个图像,我正在尝试调整它的大小。(在我目前的尝试中,重叠的东西是我最接近让它工作的东西)。

制作中的布局将更加复杂,包括媒体元素(视频)、图像、文本等,并且都必须相应地缩放。这不是用户与之交互的东西,因此没有表单元素等,因此我不需要表单字段等在整个缩放过程​​中保持相同的大小。我只需要像缩放图片一样缩放所有内容。例如,如果我在 1920x1080 屏幕上显示这个 1280x720 (16:9) 布局,最大化它应该看起来相同,只是更大。

希望有人能以此为我指明正确的方向。

到目前为止我所尝试的——我在谷歌上找到的几篇与此相关的文章(我很可能正在搜索错误的东西)导致我将所有元素放在一个视图框中,这导致了我之前提到的重叠。

想法?

4

1 回答 1

0

我认为您可以使用ViewBox容器。基本思想如下:ViewBox像缩放图像一样缩放其内容。这似乎是您在问题中描述的最接近的结果。只需将Grid具有绝对大小的列和行的 a 放入ViewBox并将其 Stretch 设置为 Uniform:

<Viewbox Stretch="Uniform">
    <Grid>
        <..>Your controls, MediaElements, etc
    <Grid>
</Viewbox>

您还可以将它与(例如)Grid Container组合(或完全替换) :它使您能够指定单元格宽度和大小使用与 html 的百分比语法类似的星形语法。

另一种方法是使用 DockPanel。

总而言之,有很多方法可以实现类似的目标,而要走的路很大程度上取决于您的特殊要求的细微差别。查看本教程以了解 WPF 容器以及如何使用它们的良好概述。

于 2013-04-07T14:37:13.790 回答