使全屏wpf应用程序在所有分辨率上看起来都一样

时间:2014-10-30 20:45:09

标签: c# wpf fullscreen

我想制作一个全屏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在不同的resoultions上看起来几乎相同。图片: http://i.stack.imgur.com/W1SL6.png http://i.stack.imgur.com/7KYxX.png

更新:我只是想知道这些值应该是什么让程序像我想要的那样工作: 窗户高度, 窗口宽度, 网格高度, 网格宽度,

抱歉兄弟,我是初学者:\

2 个答案:

答案 0 :(得分:7)

另一种方法是使用ViewBox:

<Viewbox StretchDirection="Both" Stretch="Uniform" />

例如:

<Window 
Height="480"
Width="800">
 <Viewbox StretchDirection="Both" Stretch="Uniform">
   <Grid Height="480" Width="800">
   </Grid>
 </ViewBox>
</Window>

现在,当您调整窗口大小时,所有元素也会调整大小。

答案 1 :(得分:2)

在每个分辨率中都不可能使应用程序看起来完全相同。其中一个问题是文本 - 与按钮,ListBox或其他任何东西一样,难以缩放文本。

但是,您可以做的其中一件事就是使您的应用程序看起来非常相似,就是使用相对定位和大小而不是绝对,就像现在一样。

我很少发现它有用或成功使用上面的边距,其中菜单偏移了400个像素。通常情况下,这最终会使您的设计看起来只有您设计它们的确切尺寸。如果您希望将其放在控件的顶部,则可以执行以下操作:

<Menu ... VerticalAlignment="Top"  ...>

这将始终将此菜单与窗口顶部对齐。同样,如果您希望菜单在窗口中占用相同数量的相对垂直空间而不管窗口的绝对大小,则可以使用Grid.RowDefinitions属性:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="10*"/>
        <RowDefinition Height="90*"/>
    </Grid.RowDefinitions>

   <Menu Grid.Row=0 />
</Grid>

这样,菜单占据了整个顶行,并且无论调整大小,都会消耗窗口中10%的垂直空间。显然有一些边缘情况,特别是当控件调整到不能再看到它们包含的文本时 - 如果这些是关注点,你应该在你的窗口或特定控件上使用MinHeight和MinWidth以便在哪个控件不再缩小。

请注意,如果您没有明确设置网格的大小,则默认情况下会填充其整个父容器 - 在这种情况下,整个窗口。如果您希望应用程序看起来相同,则无法为父网格提供绝对大小,如800x480。