第一次处理GUI项目..并且第一次在Windows上工作,所以如果这是一个真正的noob问题,请提前道歉。 从vb.net WPF开始,我正在进行Windows编程。在Visual Studio Express 2012中工作。
我正在尝试弄清楚如何使用窗口本身缩放窗口中的所有元素。 例如,我创建了一个窗口,例如1280x720,并在窗口中放置一些图像。说一个在顶部,一个在角落。 (这是基于媒体的基本应用程序) 当我调整窗口大小时,我想让整个窗口随之缩放,因此图像1&如果窗口变大,2将变得更大,但是这必须按比例发生,这样如果我在一个方向上使窗口大得多,则一个图像不能与另一个图像重叠。想象一下窗口是一个图像,我正在尝试调整它的大小。 (重叠的事情是我在目前的尝试中最接近的工作)。
生产中的布局将更加复杂,包括媒体元素(视频),图像,文本等,所有都必须相应缩放。 这不是用户与之交互的内容,因此没有表单元素等,因此我不需要表单字段等在整个缩放过程中保持相同的大小。我只需要扩展所有内容,就像我缩放图片一样。例如,如果我在1920x1080屏幕上显示此1280x720(16:9)布局,则最大化它应该看起来只相同更大。
希望有人能指出我正确的方向。
我到目前为止所尝试的内容 - 我在google上找到的与此相关的几篇文章(我可能正在搜索错误的内容)导致我将所有元素放入视图框中,这导致我提到的重叠早。
想法?
答案 0 :(得分:0)
我认为您可以使用ViewBox容器。基本思想如下:ViewBox
缩放其内容,就像缩放图像一样。这似乎是您在问题中描述的最接近的结果。只需将Grid
的绝对大小的列和行放入ViewBox
并将其Stretch设置为Uniform:
<Viewbox Stretch="Uniform">
<Grid>
<..>Your controls, MediaElements, etc
<Grid>
</Viewbox>
您还可以将它(或完全替换)与(例如)Grid Container结合使用:它使您能够指定单元格宽度和大小使用星形语法,这与html的语法百分比类似。
另一种方法是使用DockPanel。
总而言之,有很多方法可以实现类似的东西,并且前进的方式在很大程度上取决于您的特殊要求的细微差别。 查看This tutorial以查看WPF容器的良好概述以及如何使用它们。