【Win10】一些零碎不好归档的小总结(原谅我这个该死的标题吧)

一、同步方式获取设备的屏幕分辨率

public static class ScreenResolution
{
    /// <summary>
    /// 获取屏幕高度。
    /// </summary>
    public static int Height
    {
        get
        {
            var rect = PointerDevice.GetPointerDevices().Last().ScreenRect;
            var scale = DisplayInformation.GetForCurrentView().RawPixelsPerViewPixel;
            return (int)(rect.Height * scale);
        }
    }

    /// <summary>
    /// 获取屏幕宽度。
    /// </summary>
    public static int Width
    {
        get
        {
            var rect = PointerDevice.GetPointerDevices().Last().ScreenRect;
            var scale = DisplayInformation.GetForCurrentView().RawPixelsPerViewPixel;
            return (int)(rect.Width * scale);
        }
    }
}

最初思路来源:http://bbs.wfun.com/thread-860192-1-1.html

测试结果:

Desktop(device Win10 10240)
Correct Value:1920x1080
Test Result:1920x1080

Mobile(emulator W10M 10240 WXGA 4.5 inch)
Correct Value:768x1280
Test Result:768x1280

Mobile(emulator W10M 10240 WVGA 4 inch)
Correct Value:480x800
Test Result:480x854

只有最后一个是不相等的,个人认为是因为虚拟导航栏的原因,因此我觉得该代码理论上是没有问题的,可以投入生产环境。

当然如果不放心的话也可以使用 Win32 API 来获取屏幕分辨率。

[DllImport("user32.dll")]
public static extern int GetSystemMetrics(SystemMetric smIndex);
int x = GetSystemMetrics(SystemMetric.SM_CXSCREEN);
int y = GetSystemMetrics(SystemMetric.SM_CYSCREEN);

SystemMetric 是一个枚举类型,定义可以参见:http://pinvoke.net/default.aspx/Enums.SystemMetric

获取出来的结果跟上面 Test Result 是一样的,并且该 API 在 desktop 和 mobile 都可以用。

二、运行时访问 Package.appxmanifest 文件

有些数据是写在 Package.appxmanifest 文件里的,例如磁贴用的图片、启动屏幕用的图片,运行时获取这些信息就只能访问 Package.appxmanifest 文件了。

string manifestPath = Path.Combine(Package.Current.InstalledLocation.Path, "AppxManifest.xml");
XDocument document = XDocument.Load(manifestPath);

编译后,解包我们得知是会变成 AppxManifest.xml 文件,接下来用 XDocument 或者 XmlDocument 解释就可以了。

manifest 的 schema 文档地址:https://msdn.microsoft.com/zh-cn/library/windows/apps/dn934760.aspx

三、获取 GB2312 Encoding

以前 WP8.1 没记错是得到 codeplex 上找这个 Encoding 的,现在不用了。

// 这两句执行一次就可以了,当然重复执行也没坏的。
EncodingProvider provider = CodePagesEncodingProvider.Instance;
Encoding.RegisterProvider(provider);

Encoding gb2312 = Encoding.GetEncoding("gb2312");

// 抛出 ArgumentException
// Encoding doge = Encoding.GetEncoding("doge");

前两句可以放在 App.cs(当然某些人手贱将入口点改成别的也没大问题)里。执行一次就已经可以了。接下来就可以获取 Encoding 了,当然前提是你机子上有这个 Encoding,没有的话就像上面 doge 那样抛出一个 ArgumentException。

四、获取主题色(AccentColor)

public static Color AccentColor
{
    get
    {
        return new UISettings().GetColorValue(UIColorType.Accent);
    }
}

UIColorType 是一个枚举类型,里面还有 Background 的颜色之类的。

当然继续沿用 WP8.1 的方法也可,通过 Resource 来获取,只不过 Win10 里的 ResourceKey 变了。

五、App.cs 里的 Launched 和 Actived 有啥区别

一图流不解释。

之前周末休息整理的,不整理不知道,原来这么乱。话说好久没用 Paint.Net 有点不习惯。

此图乃个人整理,请勿当真,如有错漏,请在评论指出。



最后希望工作的面试能过,顺利拿到 offer,然后早点交接完辞掉现在这份好好休息几天(最近感觉有点累)。

时间: 2024-10-11 02:53:30

【Win10】一些零碎不好归档的小总结(原谅我这个该死的标题吧)的相关文章

win10下使用openvpn的一个小坑

公司生产环境使用openvpn远程连接进行维护,而我的电脑是win10专业版本,使用openvpn拨号的时候,提示已经连接,但访问远程的地址却是各种不通,询问其它同事,都说使用openvpn能够正常访问远程的地址,难道是自己人品不好,后来有同事提醒,说用win10的管理员模式试试重新打开openvpn客户端. 使用管理员模式重新打开openvpn客户端,然后使用route print,的确发现多了一条路由,这个时候就可以正常访问远程的地址了,问题得到解决. 到此,问题得到解决,感谢老王同事的热心

雨林木风Win10纯净版兼容性怎么样?Win10兼容性好不好?

不少网友对雨林木风Win10纯净版兼容性怎么样,安装雨林木风Win10纯净版会不会有软件不兼容的情况发生?小编可以很明确告诉大家,雨林木风Win10纯净版非常是一款非常不错的系统,稳定并安全,修复了原版N多问题. 雨林木风Win10纯净版下载地址:http://www.ylmf10.com/win10chunjing/ 兼容性 雨林木风Win10纯净版应适用于可与Windows 8.1 一起使用的设备和程序,但是可能需要更新或重新安装某些设备和程序. Windows附带存储.网络.输入和显示等基

WIN10 计算器 计算 表数范围小的可以向表数范围大 数据丢失

表数范围小的可以向表数范围大的进行自动类型转换,就如同有两瓶水,当把小瓶里的水倒入大瓶中时不会有任何问题.反之则会出现问题. 以short为例.

解决win10高分辨率软件菜单显示很小问题

右键应用程序图标,右键属性 原文地址:https://www.cnblogs.com/alpha-w/p/9460632.html

初尝微信小程序2-Swiper组件、导航栏标题配置

swiper 滑块视图容器. 很多网页的首页都会有一个滚动的图片模块,比如天猫超市首页,滚动着很多优惠活动的图片,用来介绍优惠内容,以及供用户点击快速跳转到相应页面. Swiper不仅可以滚动图片,也可以是文本,以及其他组件,需要灵活应用. 基本的配置包括:是否显示面板指示点.指示点颜色,当前选中的指示点颜色.是否自动切换.自动切换时间间隔.是否垂直滚动等. 详情如下官方文档: 实例:编写新闻阅读列表 示意图: 按照第二篇随笔:初尝小程序2-基本框架,中的工程,进行添加内容. 工程目录结构为:

嫌Win10用着不顺手?推荐另类小技巧五枚

Win10的精彩相信很多网友已经亲身领略了,作为微软2014年的年度大戏,应该说从厂商这里还是颇有诚意的.不过就像过往的很多操作系统一样,Windows 10同样有着一些让人无奈而又无法摆脱的遗憾.OK!几组小技巧献给大家,如果你是一枚Win10控!赶快来看看吧. 软件名称: Windows10技术预览版 软件版本: 官方简体中文版 软件大小: 3769.53MB 软件授权: 免费 适用平台: WinXP Win2003 Vista Win8 Win7 下载地址: http://dl.pconl

Win10配置ADB工具教程

1.在该网站下载adb工具 http://pcedu.pconline.com.cn/748/7481463.html 2. Win10怎么配置ADB环境?Win10怎么安装ADB工具?这想必是很多安卓玩家都关心的问题.特别是Nexus设备的用户,大量的刷机.玩机操作都需要借助ADB和Fastboot命令来实现.Win10要如何配置ADB和Fastboot呢?今天就让小编来分享一些方法吧. ?Win10配置ADB教程 首先,我们需要正确安装ADB/Fastboot驱动.一般来说,Win10联网的

win7和win10的区别

说到电脑系统,现在大部分人使用的系统无非是win7和win10俩个系统,这里小编就给大家总结一下这俩个系统的有缺点. win7是微软2009年发布一款Windows系统,想想时间也是很快,这个系统也服役了10年了,从软硬件兼容程度上,已经是完全没有问题了,目前微软计划在2020年正式结束对win7的支持,届时win7不在会有安全性补丁,以及系统稳定性大大不如win10系统了.win10是微软2015年发布的一款Windows系统,也是目前世界最主流的操作系统,在装机量上现在也高于之前的旗舰系统w

Win10笔记本取消开盖自动开机的设置方法

原文链接:http://www.itjsb.com/news/show-20493.html 现在买电脑大多数都是预装win10系统,因为win10系统安装加硬件安装不到20分钟.超强的自我修复功能.更快的开机速度……但有些win10用户也反映了一些小毛病:当笔记本盖子打开时,电脑就自动开机.虽然大部分打开盖子就会使用电脑,但是如果在不知情的情况下,必然会消耗电量,造成不必要的浪费.而且有可能造成资源上的损失.所以小编就来为win10用户解疑答惑啦! 取消Win8笔记本开盖自动开机的方法: 1.