07、在 Windows10 上获得屏幕分辨率

  因为在 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(1200, 900)));
        }

        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(100,100));
        }

        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));
        }

        private void Button_PreferredLaunchViewSize_Click(object sender, RoutedEventArgs e)
        {
            Windows.UI.ViewManagement.ApplicationView.PreferredLaunchViewSize = new Size(800, 800);
        }

        // 过期了
        private void Button_ApplicationViewState_Click(object sender, RoutedEventArgs e)
        {
            Debug.WriteLine("ApplicationViewState:" + Windows.UI.ViewManagement.ApplicationView.Value.ToString());
        }

        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;
            }
        }

时间: 2024-10-05 07:07:15

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

使用CSS3 Media Query技术适配Android平板屏幕分辨率和屏幕密度

使用HTML5开发移动应用时需要适配各种Android平板设备的分辨率和屏幕密度,过程实在很麻烦,最后的解决办法是使用css media query,同时匹配分辨率和屏幕密度,在每个设备上进行兼容性测试,最终保证在多数Android平板上都能较好的显示. 一个典型的针对设备的Css Media Query写法如下,可以保证页面高度充满屏幕,简单的设置height:100%是不行的. //SAMSUNG N5100, Nexus7 1, @media only screen and (min-de

NGUI之UIRoot屏幕分辨率自适应

来自:http://blog.csdn.net/oneRain88/article/details/11713299 NGUI在Unity3D游戏开发中非常常用,而NGUI对于每一个UI场景,都是以一个UIRoot为UI游戏对象树的根的,那么这个UIRoot是起什么作用的呢? 先简单看一下UIRoot中的基本属性 UIRoot游戏对象的属性只有4个,分别是缩放规则,手动高度,最小高度和最大高度 而正是这4个属性,将影响整个UI场景中整体的缩放比例,当设置好这4个属性之后,UIRoot游戏对象的相

webapp开发——‘手机屏幕分辨率’与‘浏览器分辨率’不要混淆

关于webApp响应式设计遇到的问题,分享给大家,最近在做一个手机webApp,因为我手机是”米3“,屏幕截图大小是1080宽,所以css样式用@media screen and(min-width:1080px){  …… },来判断屏幕最小宽度是1080px的手机web显示什么样的样式,结果却不能正常显示我所指定的css样式,最后在网上查了一下,发现分辨率的范围不对. css代码如下: @media screen and (min-width:1080px){ ...............

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

VirtualBox中Ubuntu 14.04屏幕分辨率不能设置的问题 ??在VirtualBOx虚拟机中Ubuntu 14.04设置屏幕分辨率,怎么点都没反应. 方法一:安装与你的Ubuntu-Guest版本最接近的VirtualBox Guest Additions版本,如下: sudo apt-get install virtualbox-guest-dkms 1 1 ??安装完所需要的包后,重启VirtualBox,便可以以合适的分辨率显示. ??如果运行的是MAC OSX,使用以下命令

屏幕分辨率(QQVGA、QVGA、VGA、XGA、WXGA、WUXGA和WSXGA+)

TFT屏幕 TFT ( Thin Film Transistor 薄膜晶体管) ,是有源矩阵类型液晶显示器(AM-LCD)中的一种,TFT在液晶的背部设置特殊光管,能够“主动的”对屏幕上的各个独立的象素进行控制,这也就是所谓 的主动矩阵TFT(aCTive matrix TFT)的来历,这样能够大大的提高反应时间,一般TFT的反映时间比較快约80ms,而STN则为200ms假设要提高就会有闪烁现象发生.并且因为 TFT是主动式矩阵LCD可让液晶的排列方式具有记忆性,不会在电流消失后立即恢复原状.

[HTML5]手机屏幕分辨率和浏览器分辨率

在使用CSS3的中有如下类似代码 Html代码 @media screen and (max-width:480px){ -- } 意思是在最大宽度为480px的设备上应用{}里面的样式.这里的width,注意是手机浏览器的分辨率,而不是手机设备的屏幕分辨率.比如苹果4的手机屏幕分辨率是960x640.而其自带的Safari浏览器的分辨率是320*480.我们可以通过如下代码检测所用的浏览器的分辨率: Js代码 $("#info").html("(您的浏览器的分辨率为:&qu

webapp开发——————手机屏幕分辨率和浏览器分辨率不要混淆

关于webApp响应式设计遇到的问题,分享给大家,最近在做一个手机webApp,因为我手机是"米3",屏幕截图大小是1080宽,所以css样式用@media screen and(min-width:1080px){  ...... },来判断屏幕最小宽度是1080px的手机web显示什么样的样式,结果却不能正常显示我所指定的css样式,最后在网上查了一下,发现分辨率的范围不对. css代码如下: @media screen and (min-width:1080px){ ......

CoCos2d-x屏幕分辨率设置

CoCos2d-x屏幕分辨率设置 接下来是讲述CoCos2d-x对屏幕分辨率设置的问题:主要是 setFrameSize.setFrameZoomFactor 和 setDesignResolutionSize 函数的使用. 1 . setFrameSize这个函数是设置移动设备屏幕分辨率,一般与setDesignResolutionSize的设置一致. 2 . setFrameZoomFactor 调用这个函数是因为有的移动设备屏幕分辨率非常大,比如ipad3.太大的话在电脑上看不全了,所以用

WPF获取屏幕分辨率

转自:http://blog.csdn.net/w8666666/article/details/8190002 double x = SystemParameters.WorkArea.Width;//得到屏幕工作区域宽度double y = SystemParameters.WorkArea.Height;//得到屏幕工作区域高度double x1= SystemParameters.PrimaryScreenWidth;//得到屏幕整体宽度double y1 = SystemParamet