因为在 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. OpenCV 视频处理框架

    OpenCV 本身集成了 FFmpeg,因此对于视频是有解码和编码功能的.尽管其效率在本人看来还不能跟未被封装的FFmpeg相提并论,然用其来对视频进行解码得到图像,然后对图像进行处理并将得到的图像又 ...

  2. spring常用注解以IOC理解

    使用注解来构造IoC容器 用注解来向Spring容器注册Bean.需要在applicationContext.xml中注册<context:component-scan base-package ...

  3. 用srvctl命令配置service

    .用srvctl命令配置service 除了用DBCA图形方式,还能够使用命令方式配置service,这样的方法对于维护远程尤事实上用.不管是创建还是维护都是用一个命令srvctl,先看一下srvct ...

  4. SettingsJDK

      迁移时间:2017年5月20日23:38:40 Author:Marydon 1.双击安装,更改安装路径为D:\ProgramFiles\Java\jdk1.7.0_55: 注意事项: 1.1 将 ...

  5. java中普通代码块,构造代码块,静态代码块的区别及代码示例

    本文转自:http://www.cnblogs.com/sophine/p/3531282.html 执行顺序:(优先级从高到低)静态代码块>main方法>构造代码块>构造方法. 其 ...

  6. HDUOJ---1996汉诺塔VI

    汉诺塔VI Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  7. RabbitMQ消息队列(四):分发到多Consumer(Publish/Subscribe)[转]

    上篇文章中,我们把每个Message都是deliver(提供)到某个Consumer.在这篇文章中,我们将会将同一个Message deliver(提供)到多个Consumer中.这个模式也被成为 & ...

  8. 尾递归与Continuation

    怎样在不消除递归的情况下防止栈溢出?(无论如何都要使用递归) 这几天恰好和朋友谈起了递归,忽然发现不少朋友对于“尾递归”的概念比较模糊,网上搜索一番也没有发现讲解地完整详细的资料,于是写了这么一篇文章 ...

  9. CLH队列锁

    http://blog.csdn.net/aesop_wubo/article/details/7533186 CLH锁即Craig, Landin, and Hagersten (CLH) lock ...

  10. c#实现用SQL池(多线程),定时批量执行SQL语句

    在实际项目开发中,业务逻辑层的处理速度往往很快,特别是在开发Socket通信服务的时候,网络传输很快,但是一旦加上数据库操作,性能一落千丈,数据库操作的效率往往成为一个系统整体性能的瓶颈.面对这问题, ...