UI框架在Windows上对DPI的感知情况

名词介绍:Windows下对高DPI的支持有几个等级,分别是不感知、系统级别感知、显示器级别感知。不感知则由系统强制缩放,界面模糊。系统级别感知只能获得系统级别的DPI,在更改缩放比例但没有注销的情况下会模糊,在将窗口移动到另外一个不同DPI的显示器时会模糊。显示器级别感知:能够感知每一个显示器的DPI并正常显示。

继续阅读“UI框架在Windows上对DPI的感知情况”

使用VHDL制作二进制转BCD电路

最近在研究FPGA,涉及到一个将二进制数转换为BCD码显示出来的工作,整理出一套同时支持整数和小数的由二进制转换为十进制的算法。这套算法是可综合并且实测有效的。

这个电路的设计思路来源于两方面。一方面是人工进行进制转换的方法:将每一位二进制数所代表的十进制数加起来;另一方面是汇编语言中的BCD加法调整指令DAA的算法:若加法的结果大于9,则标记进位并且将结果再加上6。 继续阅读“使用VHDL制作二进制转BCD电路”

使用PowerShell自动放置Android图片资源

Android项目中,需要将不同分辨率的图片资源(drawable)放到对应的文件夹中。但是AI批量导出图片的时候,只能在文件名后面加后缀,不能将不同分辨率的图片放到不同的文件夹中。使用PowerShell脚本可以快速将不同后缀的文件放到对应的文件夹中,并去除文件名后缀。

继续阅读“使用PowerShell自动放置Android图片资源”

UWP Application类解析

每一个C# UWP应用中,必不可少的一个文件就是App.xaml.cs。App类是整个程序的入口,它继承了Application类。在App.xaml.cs中,我们可以通过重写Application类中的一些函数,来自定义程序启动时的行为。

在默认UWP模板中,OnLaunched函数担任了初始化程序窗口的工作。但实际上,一个UWP应用的生命周期中,OnLaunched函数可能被调用任意次(包括0次或者很多次)。所以,在初始化程序窗口的时候,必须考虑重复初始化的问题。新手很容易犯的一个错误是在OnLaunched函数中绑定OnBackRequested函数,这样会导致在某些情况下,按一次后退键后退多个页面,或是在某些情况下后退键无效的问题。

继续阅读“UWP Application类解析”

如何判断UWP应用是否具有焦点

桌面版本Windows中,一个UWP应用只有在被最小化的时候才会引发Suspending事件,在使用了扩展执行(Extended Execution)(参见使用扩展执行最小化运行)的情况下,更是不知什么时候才会引发Suspending事件了。手机系统中,Suspending同样不能代表应用不具有焦点。所以,使用Suspending和Resuming事件判断应用是否具有焦点是不可行的。

继续阅读“如何判断UWP应用是否具有焦点”

那些每个Windows 10应用都应该要有的东西

虽然这是一篇有大量代码的文章,但它绝不是一篇仅供开发者阅读的文章。如果你看不懂代码,那就直接跳过吧!

1、对“返回键”的处理

Windows Phone有物理的返回键。Windows 10 PC上,有应用左上角的小箭头。Windows平板电脑上,有任务栏上的返回键。那么,如果返回键不能达到“返回”的作用,那么用户当然会非常沮丧。对返回键的处理可以参见新的文章:UWP后退功能处理
继续阅读“那些每个Windows 10应用都应该要有的东西”