引子
相比 uwp 应用,Win32 应用在“开始”菜单中显得很丑,尤其是某些拟物设计风格的图标,强行配上扁平化的磁贴,显得格格不入。而且,所有 Win32 应用磁贴的背景色都是固定的,不能根据图标配色进行适配,也很丑
但是,仔细观察后发现,有些 Win32 应用竟然和 uwp 应用一样拥有漂亮的磁贴。比如:
当然,你可以说说微软家的应用是亲儿子,亲儿子有特别优待。但是,Mathematica 和 Origin 也有“客制化”磁贴,这又怎么解释:
而且,值得注意的是,Mathematica 不仅图标特殊,连应用名称都没用微软雅黑,这又是怎么回事?
原理
打开上面提到这些拥有特殊磁贴的 Win32 应用的文件所在位置,仔细观摩对比一番,最终锁定了这个文件:AppName.VisualElementsManifest.xml
其中 AppName 就是对应的可执行文件的名字,例如:
以 Mathematica 为例,打开 Mathematica.VisualElementsManifest.xml
,代码如下:
<?xml version="1.0" encoding="utf-8"?> <Application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <VisualElements ForegroundText="light" BackgroundColor="#DD1100" ShowNameOnSquare150x150Logo="off" Square150x150Logo="SystemFiles\FrontEnd\SystemResources\Windows\AppTile.png" Square70x70Logo="SystemFiles\FrontEnd\SystemResources\Windows\AppTileSmall.png" /> </Application>
经过修改尝试不难得到:
- 参数
ForegroundText
控制中号磁贴下方的 App 名称字体颜色,可选Light
、Dark
两个值 - 参数
BackgroundColor
控制磁贴默认背景颜色,值为16进制颜色代码
或常用颜色名
- 参数
ShowNameOnSquare150x150Logo
控制中号磁贴下方是否显示 App 名称,可选on
、off
两个值 - 参数
Square150x150Logo
控制中号磁贴显示的图标,值为图片路径
- 参数
Square70x70Logo
控制小号磁贴显示的图标,值为图片路径
我们可以观察一下 Origin 的磁贴配置文件:
<Application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <VisualElements BackgroundColor="black" ShowNameOnSquare150x150Logo="on" ForegroundText="light"/> </Application>
可以看到,实际上 Origin 的“高端客制化”仅仅修改了磁贴背景颜色2333
微软开发者文档
本着不得其源不罢休的精神,我在 Microsoft Docs 中找到了这样一篇 Doc:
看完官方文档,还有以下几点值得学习的地方:
-
配置文件中的
Square150x150Logo
和Square70x70Logo
属性是可选的,但所有其他属性都是必需的。(参考 Origin 的配置方案) -
颜色预定义字符串有:
-
对磁贴图像的限制:
- 尺寸小于等于 1024x1024 像素
- 文件大小小于或等于 200 KB
- 文件类型为 .png、.jpg、.jpeg 或 .gif
-
如果你选择自定义图像,则必须针对 Square150x150Logo 和 Square70x70Logo 属性指定图像。如果仅指定其中一个属性,则忽略整个 XML 文件,并将默认样式(应用图标和背景)应用到磁贴。
-
一个优秀的开发者应当指定呈比例的、本地化的和高对比度的图像,详见 Doc 步骤 6
参考 Office 的图像列表:
- 创建或修改磁贴样式配置后,应刷新快捷方式文件
方法为,在 快捷方式所在目录 运行 cmd,输入命令:
for %f in (*.*) do copy /b "%f" +,,
此步操作参考:Win10自定义开始菜单磁贴背景颜色及图标
学以致用
给我的 Adobe 全家桶换上了自定义磁贴,开始菜单更漂亮了,嘿嘿~
文章评论
给你的 Adobe 全家桶换上了自定义磁贴,开始菜单更丑陋了,嘿嘿~
@Ottoli的爸比 ?????