修改 Potplayer 皮肤 Metro.X 第二期
也是最后一期 至于为什么是最后一期我会在下边记录的 不过这个,未来的我,你应该记得 除非你以后很久很久都不玩 GUI 了 距离 第一期 已经有半年了 这半年发生了很多事 比如…… 嗯然而这里没必要插入什么事件 这次要不是某个白痴的白痴行为,我的这次假期也不会将要提前四天结束 当我得到消息的时候,我立刻想接下来我要做什么呢 唉,假期要结束了,我要做什么呢 于是花了几小时把第一期让我产生的许久的不爽解决掉了 说是「解决」掉,其实还是有不得不妥协的地方 那么我忘了是 2,3,还是 4 个月前,我把皮肤改成了紧致状: >img_1

> 把时间轴放在上边主要是因为我要看字幕 嗯这幅图算是 bad example 字幕大多数时候都在下边的 那么在大多数时间里,时间轴的信息以及那个播放/暂停按钮对我造成了信息冗余 还有那些 chapter 标记 播放按钮我丢掉右下角了,一个不起眼的地方 这个皮肤播放跟暂停的时候外表是一样的 但是如果把鼠标挪到右下角,播放/暂停会显现,像这样: >img_2

> 第一行字是当前时间,第二行是视频时间 怎么样,很酷吧 嗯其实这不是我想要的效果 因为这个实现方式决定了两个时间的颜色必须跟背景色一致 而且必须通过一个色块来实现 当时我没想到别的方案 而且最初这个方案看起来还可以 这半年来,上边的四个钮,音量,音频选择,控制盒,字幕控制 我几乎从来没用过 这次把皮肤改成这样:第一张是播放时,第二张是暂停时 >img_3

> >img_4

> 把鼠标挪到播放/暂停那里也会显现时间 这次算是做到了我上次想做的 按钮的语言总算风格一致了 最小化跟关闭按钮被隐藏了 鼠标挪到它们的位置它们还会显现 如 >img_5

> 以及 >img_6

> 为了配合这种使用方法,我最大可能的增加了按钮的有效域 一个问题是有效域没有被色块标注 这么干纯粹是为了跟其他按钮统一风格 这样的按钮我在自己的 Visual Studio 里用过很长时间 这次挪到这里来了…… 要是新接触这皮肤,可能会不习惯吧 不过这对我来说不是什么问题 毕竟这皮肤,设计时的目的用户有且仅有我一人 写日志也只是为了未来参考 (第一期的日志怎么看起来像另一个人写的) 呃回到原主题…… 关于按钮功能得说一下 这里还是有点原则的 「先说设计原则,再说技术细节」 如果是在笔记本键盘上方便按到的一个键能启用的功能,则这里不会存在一个相同功能的按钮 那么 1 音量控制实在没必要存在,就算好看也没必要存在 鼠标中键,键盘方向键 足够了 2 那个 Control Box 我从来没用过 都是右键菜单找相应功能的 所以那个图标改成了 Preferences 因为它的快捷键是 F5 这个在我的全规格键盘上一摸就摸到了 因为是每四个一组的 但是在笔记本上就够呛了 Mac 系的 FX 字还特别小 3 音频选择这个功能,首先不常用 其次如果我要用 我直接按 A 键 这是在半年之前就已经有的习惯 因为之前的皮肤没有提供一个显眼的相同功能的按钮 4 Playlist 键盘快捷键的情况跟 Control Box 类似 但是它在功能上是必要的 5 上一个文件/下…… 这个……笔记本键盘上用 fn + 上下方向键 触发 烦死了还得两个手按 虽然我的手长但还没长到那个地步 所以有保留的必要 而且事实上这俩钮我也常用 6 关于 当前时间/视频时长 (让我模仿下贝木……) 接下来是自问自答时间 Q 我是否想在视频播放的同时注意到屏幕上别的地方在动? A 开什么玩笑。要是什么东西在动,别让我注意到 当前时间是个什么鬼 去自行消失…… Q 我是否需要一种方便的方式看到 当前时间/视频时长? A 是的,需要 虽然 TAB 键很方便,但是那个很影响视频观感 还是需要在皮肤上显示 所以想这么设计: 在视频播放的时候,时间是不显示的,除非: 当鼠标挪到时间区域,时间显示 鼠标戳一下时间区域,视频改变播放状态 视频暂停时,时间显示 当实现出来,自己上手玩,还是挺有趣的 如果你用空格键控制播放状态 皮肤上总是显示静止的时间 你得用鼠标去看流动的时间 鼠标戳一下流动的时间 时间就停在那了 这玩意做 播放/暂停 按钮不是正好么! 7 时间轴 三个月前换了 4K 屏 显示比例 150% 果然时间轴的 5 像素高不给力啊 总是戳不到 于是加到了 8 像素 Potplayer 的皮肤定义体系是要被时代淘汰的 GUI 的未来是矢量图形 这是「最后一期」的主要原因 虽然我可以写个脚本让皮肤定义里的所有坐标都翻倍 但我还得拿矢量图去生成翻倍的位图啊 然而我没有它的矢量图 所以就这样吧 本来整个定义体系就很丑 就不折腾了 时间轴的另一个问题是 chapter 标记 有些皮肤没有,有些有但是很扎眼 我的需求是,在我想注意的时候能轻松注意到 在看视频的时候,别很扎眼 当然进度条本身不能很扎眼 于是做成这样: >img_7

> 灰度 20, 37, 50 差不多令自己满意吧 差强己意就行了…… 好了,终于到激动人心的技术细节了 嗯我在开玩笑 根本不死激动人心 压根就是恼人 1 关于 CmdID 来自原作者的,有个开关字幕的按钮 其 CmdID 是 ID_CAPTION_VISIBLE 这个是其他皮肤包括默认皮肤都没使用的功能 后来找了找,DAUM 没有关于皮肤的文档 没有! 我想把 DAUM 给炸了 那么些人给 Potplayer 做皮肤 敢情他们都是从你默认皮肤里的配置文件里猜的? 然后在谷歌用完整关键字搜索 找到一个俄螺丝论坛 螺丝论坛上有人给了个表 (皮肤原作者会俄语,估计是俄国人) 为了防止无法访问……我复制到另一个文档里…… 还好这些足够直白 Preferences 对应 ID_OPTION_WINDOW 2 再就是位图 GUI 如果以后有机会我寻一个可扩展的开源的播放器,给它加上一套矢量定义方式 估计这种事在我以后的人生里优先级会一直很低 然后会忘掉 话说我小时候最开始认真玩的就是矢量图形而不是位图 那还是 Flash MX 年代…… 然而自那之后……就没机会了 一直被各种目的牵着走 3 最后就是播放按钮的实现方式 把配置文件中按钮的部分放在时间信息之后 按钮的其他两个状态的位图是空的就好了 ( 为什么当时没想到 这玩意连个文档都没有好嘛……这对第一次玩皮肤的人来说有点难…… 下次玩一个有详细文档的…… ) 。 最后做出来的皮肤,看上去很平淡 甚至有点无聊 不过这算是满足了我的期望…… 需要它简洁,没有多余的元素 在需要集中注意的时候不会被皮肤干扰 需要控制或者获取信息的时候能容易达到目的 完 以后有空去寻新欢 //---- 一年后 ----// 这是 第三期