【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系统版本上的划分确实有点多 ...
随机推荐
- intellij idea 的安装与简单使用
1.将安装包拷贝到指定目录,特别注意不要有中文路径和空格,路径不要太深 2.点击安装(如果是win10系统要使用管理员权限安装) 3. 4.修改默认安装目录:一般来说我们都不要把软件安装在 ...
- Java集合set的并、交、差操作
集合的并.交.差操作 Set<Integer> result = new HashSet<Integer>(); Set<Integer> set1 = new H ...
- Hibernate查询方式(补)
-----------------siwuxie095 Hibernate 查询方式 1.对象导航查询 根据已经加载的对 ...
- .NET中的文件IO操作实例
1.写入文件代码: //1.1 生成文件名和设置文件物理路径 Random random = new Random(DateTime.Now.Millisecond); ); string Physi ...
- 关于block元素和inline元素
呃...这个会不会太基础了.最近在复习,所以基础知识也不能够忽略. 根据HTML 4.01 规范,其描述如下(http://www.w3.org/TR/html401/struct/global.ht ...
- DLL另類劫持注入法
// Win32Project2.cpp : 定义 DLL 应用程序的导出函数. // //////////////////////////////////////////////////////// ...
- cron,at的权限控制
/etc/cron.deny存在 /etc/cron.deny不存在 /etc/cron.allow存在 只有/etc/cron.allow中列出的用户才能运行crontab -e:忽略/etc/ ...
- 调用父类构造器:super
import static java.lang.System.*; class Base{ public String name; public double weight; public Base( ...
- BZOJ3170: [Tjoi2013]松鼠聚会 - 暴力
描述 有N个小松鼠,它们的家用一个点x,y表示,两个点的距离定义为:点(x,y)和它周围的8个点即上下左右四个点和对角的四个点,距离为1.现在N个松鼠要走到一个松鼠家去,求走过的最短距离. 题解 简直 ...
- Python使用wxPython、py2exe编写桌面程序-乾颐堂
Python是支持可视化编程,即编写gui程序,你可以用它来编写自己喜欢的桌面程序.使用wxPython来做界面非常的简单,只是不能像C#一样拖动控件,需要自行写代码布局.在完成编写之后,由于直接的p ...