【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 来获取屏幕分辨率。(已验证此 API 不能在商店应用包中使用,谢谢 @flashcancer 指出)
[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 都可以用。(然而商店不能用,所以然并卵)
商店中允许使用的 Win32 API 一览:https://msdn.microsoft.com/zh-cn/library/windows/apps/jj662956(v=vs.105).aspx(该链接是 WP8 的,但 Win10 应该也差不多)
二、运行时访问 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 变了。
2015/9/23 更新:
上面该方式仅能在 Desktop 下使用,Mobile 会抛异常。
public static Color AccentColor
{
get
{
return (Color)Application.Current.Resources["SystemAccentColor"];
}
}
所以还是用回 Resource 来获取吧。。。
五、App.cs 里的 Launched 和 Actived 有啥区别
一图流不解释。

之前周末休息整理的,不整理不知道,原来这么乱。话说好久没用 Paint.Net 有点不习惯。
此图乃个人整理,请勿当真,如有错漏,请在评论指出。
最后希望工作的面试能过,顺利拿到 offer,然后早点交接完辞掉现在这份好好休息几天(最近感觉有点累)。
【Win10】一些零碎不好归档的小总结(原谅我这个该死的标题吧)的更多相关文章
- win10 下安卓源码同步小技巧
win10下,通过 清华镜像源 AOSP 可以快速拿到 100G 的 .repo 备份 然后 用 repo sync 就可以得到 安卓源码,爽不爽! 下载到win10 e盘下,用powershell ...
- win10 自己DIY的arp绑定小脚本
@echo off&mode con cols=80 lines=22&title ARP_bind Tools setlocal enabledelayedexpansion rem ...
- 初尝微信小程序2-Swiper组件、导航栏标题配置
swiper 滑块视图容器. 很多网页的首页都会有一个滚动的图片模块,比如天猫超市首页,滚动着很多优惠活动的图片,用来介绍优惠内容,以及供用户点击快速跳转到相应页面. Swiper不仅可以滚动图片,也 ...
- 微信小程序通过JS动态修改页面标题setNavigationBarTitle
wx.setNavigationBarTitle({title: '当前页面'})
- Win10配置ADB工具教程
1.在该网站下载adb工具 http://pcedu.pconline.com.cn/748/7481463.html 2. Win10怎么配置ADB环境?Win10怎么安装ADB工具?这想必是很多安 ...
- Unity萌新日记—开发小技巧与冷知识(脚本篇)
在学习unity的过程中,总会遇到很多零碎的知识点和小技巧,在此把它们记录下来,方便日后查看. 第一篇是关于脚本的一些你可能不知道的小知识. 还是个正在学习的萌新,如果写的不好,请谅解. Unity版 ...
- Win10计算器在哪里?三种可以打开Win10计算器的方法图文介绍
全新的windows10系统带来了不少新的特性和改变,其中win10的计算器位置就发生了很多的变化,导致很多网友们都以为win10计算器不见了,那么,win10计算器在哪里?如何打开?针对此问题,本文 ...
- win10预览版9926升级10049操作步骤
文章转自:豆豆系统收藏备用 win10预览版系统安装的用户非常多,现在最新版本已经到了10049,但是之前很多装了9926版本或者10041版本的同学在通过系统自动更新的时候,且发现,微软官方提供的速 ...
- win10全系列官方MSDN原版系统安装密钥、版本区别、镜像下载地址与激活教程
微软发布win10正式版已经过去几天了,相信很多同学都心情高涨的装上了期待已久的win10系统,但也有很多同学面对win10系统的众多版本感到一脸茫然,的确,微软在win10系统版本上的划分确实有点多 ...
随机推荐
- $.ajax dataType设置为json 回调函数不执行
请求方式如下: $.xpost = function (url, data) { return $.ajax({ url: url, type: "POST", dataType: ...
- dubbo-admin 管理平台
一.前言 dubbo的使用,其实只需要有注册中心,消费者,提供者这三个就可以使用了,但是并不能看到有哪些消费者和提供者,为了更好的调试,发现问题,解决问题,因此引入dubbo-admin.通过dubb ...
- EasyUI 删除
<script type="text/javascript"> <!-- js --> /*================================ ...
- sqlserver批量导出存储过程、函数、视图
select text from syscomments s1 join sysobjects s2 on s1.id=s2.id where xtype = 'V' xtype V 视图 P ...
- Hibernate中一级缓存和二级缓存
缓存是介于应用程序和物理数据源之间,其作用是为了降低应用程序对物理数据源访问的频次,从而提高了应用的运行性能.缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事 ...
- 如何用INNO安装添加快捷启动方式到Win7的快速启动栏(超级任务栏)
问题:如何用INNO安装添加快捷启动方式到Win7的快速启动栏(超级任务栏) 在XP下,添加方式是直接把快捷方式复制到%appdata%\Microsoft\Internet Explorer\Qui ...
- Oracle的下载、安装和配置
win10下Oracle的下载.安装和配置 --------------siwuxie095 1.首先到Oracle官网下载Oracle,中文版官网,传送阵:点 ...
- Course Schedule课程表12(用Topological Sorting)
[抄题]: 现在你总共有 n 门课需要选,记为 0 到 n - 1.一些课程在修之前需要先修另外的一些课程,比如要学习课程 0 你需要先学习课程 1 ,表示为[0,1]给定n门课以及他们的先决条件,判 ...
- 133克隆图 · Clone Graph
[抄题]: 克隆一张无向图,图中的每个节点包含一个 label 和一个列表 neighbors. [思维问题]: [一句话思路]: 先BFS克隆点(一个点+扩展所有邻居),再克隆邻居(一个点+扩展所有 ...
- Newtonsoft.Json自动升级版本号,导致dll冲突
不知道怎么回事,vs偶尔会自动升级Newtonsoft.Json.dll的版本号,但是又不升级dll,仅仅是版本号变了,实际引用的dll还是原来的. 我用的是6.0.0的,然后版本号升级成了7.0.0 ...