【问题标题】:Scale all screen elements with window vb.net wpf使用窗口 vb.net wpf 缩放所有屏幕元素
【发布时间】:2013-04-07 05:58:11
【问题描述】:

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

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

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

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

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

想法?

【问题讨论】:

  • 发布您需要的屏幕截图,我可以告诉您在 WPF 中实现它的正确方法。 Viewbox 是要走的路,你应该在每个网格中放置 2 行网格和一个 Viewbox。

标签: wpf vb.net


【解决方案1】:

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

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

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

另一种方法是使用 DockPanel。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-03
    • 2013-06-16
    • 1970-01-01
    • 1970-01-01
    • 2013-10-01
    相关资源
    最近更新 更多