让全屏wpf应用程序在所有分辨率下看起来都一样
本文关键字:分辨率 看起来 都一样 wpf 应用程序 | 更新日期: 2023-09-27 18:28:42
我想制作一个全屏WPF应用程序,它在不同屏幕分辨率的所有机器上看起来都一样。我用800*480像素的资源创建了MainWindow.xaml。我在窗口顶部做了一个菜单,如下所示:
<Grid Height="480" Width="800">
<Menu FontSize="25" Margin="0,0,0,442" >
<MenuItem Header="File" />
</Menu>
</Grid>
但当我在调试模式下启动应用程序时,菜单就在屏幕中央。我想是因为我的屏幕分辨率是1366*768像素。那么,在完全screnn模式下,我应该怎么做才能使我的程序在不同的资源上看起来相同呢?
更新:例如,我希望它像Photoshop一样。Photoshop在不同的背景下看起来几乎一样。图片:https://i.stack.imgur.com/W1SL6.pnghttps://i.stack.imgur.com/7KYxX.png
更新:我只想知道这些值应该是什么,才能让程序像我希望的那样工作:窗户高度,窗口宽度,网格高度,网格宽度,
对不起,兄弟们,我是个初学者:''
另一种方法是使用ViewBox:
<Viewbox StretchDirection="Both" Stretch="Uniform" />
例如:
<Window
Height="480"
Width="800">
<Viewbox StretchDirection="Both" Stretch="Uniform">
<Grid Height="480" Width="800">
</Grid>
</ViewBox>
</Window>
现在,当您调整窗口大小时,所有元素也会调整大小。
不可能使应用程序在每个分辨率中看起来完全相同。其中一个问题是文本——很难像缩放按钮、ListBox或其他任何东西一样缩放文本。
但是,为了使您的应用程序看起来基本相似,您可以做的一件事是使用相对定位和大小调整,而不是像现在这样使用绝对值。
我很少发现像上面这样使用边距有用或成功,因为菜单偏移了400多个像素。通常,这最终会使你的设计看起来只有在你设计它们的确切尺寸上才好看。如果你想把它放在控件的顶部,你可以做以下操作:
<Menu ... VerticalAlignment="Top" ...>
这将始终使此菜单与窗口顶部对齐。同样,如果你想让菜单在窗口中占据相同的相对垂直空间,而不管窗口的绝对大小,你可以使用Grid.RowDefinitions属性:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="10*"/>
<RowDefinition Height="90*"/>
</Grid.RowDefinitions>
<Menu Grid.Row=0 />
</Grid>
这样,"菜单"将占据整个顶行,并且无论调整大小,都将占用窗口中10%的垂直空间。显然,存在一些边缘情况,特别是当控件的大小调整到无法再看到其包含的文本时-如果存在这些问题,则应在"窗口"或特定控件上使用"最小高度"answers"最小宽度",以提供一个有问题的控件不再收缩的楼层。
请注意,如果您没有显式设置Grid的大小,默认情况下,它会填充其父容器的全部内容——在本例中是整个Window。如果你想让你的应用程序看起来一样,你不能给父网格一个像800x480这样的绝对大小。