因为在 win10 上,app 在运行的时候,默认不是占满全屏幕,并且 windows runtime 当前没有提供获取

屏幕尺寸的 api。在桌面 win32 api 中,可以获取屏幕尺寸,不过因为是限制的 api,不能直接使用。

  我当前 PC 的屏幕尺寸:

  

方法一:通过在 WebView 控件中调用 javascript 的方式,获取屏幕分辨率:

  在页面中放一个 WebView 控件:

 <WebView x:Name="webView"  LoadCompleted="WebView_LoadCompleted"/>

  

  在页面加载完成事件中,添加 js 代码:

  private void WebView_test_Loaded(object sender, RoutedEventArgs e)
{
//webView.NavigateToString("<script>" + // "window.onload = function loaded() {" + // "document.write('屏幕分辨率为:' + window.screen.width + ' X ' + window.screen.height ); }" + // " </script>");

// 在 WebView 控件中,添加获取屏幕分辨率的方法
webView.NavigateToString("<html><head><script>function getScreenSize() { return window.screen.width + ' X ' + window.screen.height;}</script></head></html>"); } private async void WebView_LoadCompleted(object sender, NavigationEventArgs e)
{
// 在 C# 中调用 Javascript 方法,获得返回值
var str = await webView.InvokeScriptAsync("getScreenSize", null); Debug.WriteLine(str);
}

运行 app:

方式二:默认在 app 第一次启动的时候,窗口为全屏模式,然后获取窗口的尺寸。

  全屏时,窗口尺寸为屏幕的尺寸,可以把获得的尺寸存储在 Settings 里,供

后面使用。缺点就是,默认第一次全屏启动,可能不是用户想要的行为,不能强迫用户。

  调用 ApplicationView api:

  Windows.UI.ViewManagement.ApplicationView view = Windows.UI.ViewManagement.ApplicationView.GetForCurrentView();

  // 方法名中有个 “try” 词,也就是会出现 “显示全屏” 失败的情况
view.TryEnterFullScreenMode(); // 如果立即读取屏幕尺寸,还不是全屏的。在后面某个时刻全屏后,获取屏幕尺寸
Debug.WriteLine(Window.Current.Bounds.Width + " X " + Window.Current.Bounds.Height);

(与本文无关的)其它  ApplicationView 的操作:

 Windows.UI.ViewManagement.ApplicationView view = Windows.UI.ViewManagement.ApplicationView.GetForCurrentView();

        private void Button_full_Click(object sender, RoutedEventArgs e)
{
Debug.WriteLine("全屏操作:" + view.TryEnterFullScreenMode()); bool isFull = view.IsFullScreen;
} private void Button_exitFull_Click(object sender, RoutedEventArgs e)
{
view.ExitFullScreenMode();
Debug.WriteLine("退出全屏");
} private void Button_resize_Click(object sender, RoutedEventArgs e)
{
Debug.WriteLine("改变视图 : " + view.TryResizeView(new Size(, )));
} private void Button_boundsMode_Click(object sender, RoutedEventArgs e)
{
if (view.DesiredBoundsMode == Windows.UI.ViewManagement.ApplicationViewBoundsMode.UseVisible)
{
view.SetDesiredBoundsMode(Windows.UI.ViewManagement.ApplicationViewBoundsMode.UseCoreWindow);
Debug.WriteLine("设置为 : ApplicationViewBoundsMode.UseCoreWindow");
}
else
{
view.SetDesiredBoundsMode(Windows.UI.ViewManagement.ApplicationViewBoundsMode.UseVisible);
Debug.WriteLine("设置为 : ApplicationViewBoundsMode.UseVisible");
}
} // 设定窗口大小
private void Button_mini_size_Click(object sender, RoutedEventArgs e)
{
view.SetPreferredMinSize(new Size(,));
} private void Button_standard_overlays_Click(object sender, RoutedEventArgs e)
{
view.ShowStandardSystemOverlays();
} // 获取视图的 尺寸和 位置
private void Button_VisibleBounds_Click(object sender, RoutedEventArgs e)
{
Rect rect = view.VisibleBounds;
Debug.WriteLine(string.Format("VisibleBounds ---- Left:{0}, Right:{1}, Width:{2}, Height:{3}", rect.Left, rect.Right, rect.Width, rect.Height));
} // 下次 app 启动时,希望窗口的尺寸
private void Button_PreferredLaunchViewSize_Click(object sender, RoutedEventArgs e)
{
Windows.UI.ViewManagement.ApplicationView.PreferredLaunchViewSize = new Size(, );
} // 过期了
private void Button_ApplicationViewState_Click(object sender, RoutedEventArgs e)
{
Debug.WriteLine("ApplicationViewState:" + Windows.UI.ViewManagement.ApplicationView.Value.ToString());
} // 显示窗口左上角的 “back” 按钮,在 phone 上与 back 按钮关联
private void Button_global_back_Click(object sender, RoutedEventArgs e)
{
var curView = Windows.UI.Core.SystemNavigationManager.GetForCurrentView(); if(curView.AppViewBackButtonVisibility == Windows.UI.Core.AppViewBackButtonVisibility.Visible)
{
curView.AppViewBackButtonVisibility = Windows.UI.Core.AppViewBackButtonVisibility.Collapsed;
}
else
{
curView.AppViewBackButtonVisibility = Windows.UI.Core.AppViewBackButtonVisibility.Visible;
}
}

07、在 Windows10 上获得屏幕分辨率的更多相关文章

  1. 【Android 应用开发】分析各种Android设备屏幕分辨率与适配 - 使用大量真实安卓设备采集真实数据统计

    .主要是为了总结一下 对这些概念有个直观的认识; . 作者 : 万境绝尘  转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/198 ...

  2. 分析各种Android设备屏幕分辨率与适配 - 使用大量真实安卓设备采集真实数据统计

    一. 数据采集 源码GitHub地址 : -- SSH : git@github.com:han1202012/DisplayTest.git; -- HTTP : https://github.co ...

  3. JS获取浏览器高宽度,屏幕分辨率和一些定位空隙等

    IE中: document.body.clientWidth ==> BODY对象宽度 document.body.clientHeight ==> BODY对象高度 document.d ...

  4. NGUI自适应屏幕分辨率

    unity官方承诺的新ui系统一直没有推出来,我们的UI使用的是原生的OnGUI系统,刚好UI需要改版,索性就想迁到NGUI上面来,于是看了一下NGUI源码,发现NGUI可以大大的降低DrawCall ...

  5. ios各个型号设备屏幕分辨率总结

    https://blog.csdn.net/amyloverice/article/details/79389357     iPhone: iPhone 1G 320x480 iPhone 3G 3 ...

  6. cocos2d-x屏幕分辨率,窗口大小总结

    这个东西很烦人,相信很多人都不理解 今天来总结一下,首先有很多概念都要事先弄得清楚明白 1.屏幕分辨率 所谓屏幕分辨率相信很多人都知道他的概念,不就是1280pxX720PX吗?不就是这种形式吗?有什 ...

  7. VirtualBox中Ubuntu 14.04屏幕分辨率不能设置的问题

    VirtualBox中Ubuntu 14.04屏幕分辨率不能设置的问题   在VirtualBOx虚拟机中Ubuntu 14.04设置屏幕分辨率,怎么点都没反应. 方法一:安装与你的Ubuntu-Gu ...

  8. (转)JS获取当前对象大小以及屏幕分辨率等

    原文 JS获取当前对象大小以及屏幕分辨率等   <script type="text/javascript">function getInfo(){       var ...

  9. JS获取当前对象大小以及屏幕分辨率等...

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <meta nam ...

随机推荐

  1. Sql_Handle and Plan_Handle Explained

    For batches, the SQL handles are hash values based on the SQL text. For database objects such as sto ...

  2. samba温故知新

    SAMBA服务器可以实现Windows主机和Linux主机共享资源互访的功能,即在Windows下可以通过网上邻居访问Linux操作系统中SAMBA服务器共享的文件夹,当然,Linux操作系统之间同样 ...

  3. OpenWrt设置访客网络Guest Wi-Fi

    参考 https://wiki.openwrt.org/doc/recipes/guest-wlan-webinterface 1. 在2.4GHz Wireless Controller下, 创建访 ...

  4. 虚拟机和宿主机不能互ping的解决办法等

    1. 虚拟机和宿主机不能互ping的解决办法:禁用无关虚拟网卡. 2. 有时有效光驱设备为cdrom1. 3. CentOS 6.3 图形界面切换用户:System->Log Out

  5. 设置/修改centos上的swap交换分区的方法

    设置centos上的swap交换分区的方法 作为linux世界里最稳定的服务器版本,rhas5一直有很大的应用面,之前一直关注的是freebsd,因为应用的需要,特别在配合mysql和oracle上r ...

  6. HDUOJ----4501小明系列故事——买年货(三维背包)

    小明系列故事——买年货 Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total ...

  7. poj1611---The Suspects

    The Suspects Time Limit: 1000MS   Memory Limit: 20000K Total Submissions: 19754   Accepted: 9576 Des ...

  8. 设置当前Activity的屏幕亮度

    设置当前的Activity的屏幕亮度,而不是设置系统的屏幕亮度,退出当前的Activity后恢复系统的亮度. 直接看代码好了 Java代码 WindowManager.LayoutParams lp  ...

  9. 页面livereload width grunt

    step-1.   安装node 环境 step-2.  npm  install grunt-cli  \ grunt http://www.gruntjs.net/docs/getting-sta ...

  10. 配置SELINUX

    selinux的配置文件:# more /etc/selinux/config # This file controls the state of SELinux on the system. # S ...