因为在 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. servlet 服务器HTTP请求头说明

    Accept:用于告诉服务器,客户机支持的数据类型. Accept-Charset:用于告诉服务器,客户机采用的编码. Accept-Language:客户机的语言环境. Host:客户机通过该头告诉 ...

  2. Centos6.5生产环境最小化优化配置

    Centos6.5生产环境最小化优化配置,满足业务需求! 01.启动网卡 #centos6.x最小化安装后,网卡默认不是启动状态 ifup eth0  //  ifconfig eth0 up /et ...

  3. 执行Android项目时指定特定的AVD进行測试

    一个Androidproject空间能够创建一个或多个AVD来对指定的Android项目进行測试,假设仅仅创建了一个AVD则执行Android项目时自然启动该AVD,但是假设创建了多个AVD那么我们该 ...

  4. IP数据包格式详解(转)

    摘自:http://blog.163.com/hlz_2599/blog/static/1423784742011112195857956/</> TCP/IP协议定义了一个在因特网上传输 ...

  5. jquery ajax例子

    (1)取得服务端当前时间 jquery对象.load(url,sendData,function(backData,textStatus,xhr){... ...}) load():如果无参的话,就以 ...

  6. PL/SQL配置oracle客户端,登录远程数据库配置

    本地未安装Oracle数据库,但又想使用PL/SQL连接服务器端的数据库. 1.新建NETWORK文件夹, 在该文件夹下新建ADMIN文件夹, 在该文件夹下新建tnsnames.ora文件(拷贝下面的 ...

  7. 奇怪的php问题

    <?php echo 999999999999 % 2; ?> 上面的结果居然是-1,不可思议. 999999999999 % 2

  8. laravel 5.1 命令创建中间件

    1.执行命令:artisan make:middleware SessionMiddleware,执行命令之后你会看到这个文件,

  9. iOS拦截导航栏返回按钮事件的正确方式

    当我们使用了系统的导航栏时,默认点击返回按钮是 pop 回上一个界面.但是在有时候,我们需要在点击导航栏的返回按钮时不一定要 pop 回上一界面,比如一个视频播放界面,进入横屏后,默认点击返回按钮仍然 ...

  10. .NET操作XML文件之泛型集合的序列化与反序列化

    程序集:System.Xml.Serialization(在 System.Xml.Serialization.dll 中) 命名空间:System.Xml.Serialization 公共函数代码: ...