应用程序启动时如何更改屏幕分辨率?

时间:2011-01-13 09:59:35

标签: c# wpf screen-resolution

我正在与WPF,C#,SQLCE,VS 2010进行POS应用。我创建了一个带有800 * 600宽度和高度的固定窗口的帐单输入表单。

但是项目中的其他窗口可以使用系统分辨率。现在我想在My POS应用程序中打开此帐单条目表单时将系统分辨率更改为800 * 600。报告和维护股票&库存我使用丰富的UI控件,窗口大小最大化,但对于BILL ENTRY FORM(考虑到我的需要)我将其窗口大小保持为800 * 600。当我打开表格时,它看起来非常小,分辨率为1440 * 900。所以我想在这个窗口打开时将系统分辨率更改为800 * 600,当此窗口关闭时,它应该返回到1400 * 900分辨率..有没有办法做到这一点

2 个答案:

答案 0 :(得分:4)

您无需更改桌面分辨率。 WPF独立于分辨率,可以按照您需要的方式扩展所有内容。它看起来也会好得多。

对于简单缩放,您可以使用Viewbox类:

<Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Class="WpfApplication1.MainWindow"
    x:Name="Window"
    Title="MainWindow"
    Width="800" Height="600">
    <Viewbox>
        <ListView Height="150" Width="200">
            <ListViewItem>item 1</ListViewItem>
            <ListViewItem>item 2</ListViewItem>
        </ListView>
    </Viewbox>
</Window>

它将自动缩放内部的任何大小为avalibale:

small

middle

large

答案 1 :(得分:2)

以编程方式更改用户的设置不是一个好习惯 - 而是应该向用户显示一条消息,要求他们自己更改屏幕分辨率。如果您确实需要特定的解决方案,则可以取消应用程序加载,直到将其更改为所需的设置。

我强烈建议不要这样做

但是对于你的问题...... 使用GDI中的这个函数ChangeDisplaySettingsEx(不容易,但没有内置的C#函数)看看这里http://msdn.microsoft.com/en-us/library/dd183413%28VS.85%29.aspx

您需要执行"User32.dll"的DLL导入才能使用此功能。