the*_*man 22 windows-7 taskbar icons aero colors
这引起了我很长一段时间的兴趣。
有谁知道 Windows 7 Aero 用于确定当前运行的应用程序的任务栏按钮上用作热跟踪悬停突出显示的颜色的算法?
它绝对基于应用程序的图标,但我看不到它从哪里获取颜色值的特定模式。
它似乎不是以下任何一项:
我在 ux.stackoverflow.com 上问了这个问题,它被关闭为题外话,但有人回答如下:
正如 Raymond Chen 在这篇 MSDN 博客文章中所述:
有人问它是怎么做的。这真的没什么特别的。该代码仅查找图标中的主要颜色。(而且,由于视觉设计师是这类事物的忠实拥护者,因此在此计算中,黑色、白色和灰色阴影不被视为“颜色”。)
但是我对这个答案并不满意,因为它没有解释“主要”颜色是如何计算的。当然,在 SQL Management Studio 图标上,主要颜色,至少在我看来,是黄色。然而,亮点是绿色。 我想知道,具体来说,算法是什么。
Ben*_*n N 14
从欢迎使用 Windows 7 桌面开始,正好 35 分钟:
它是跨 27 个不同桶的标准化颜色直方图,我们提取黑色、白色、alpha 通道和灰色,并使用最主要的 RGBV [sic] 值......
我相当确定演讲者的意思是说“RGB”,因为“RGBV”似乎不是一回事。“标准化”部分并不重要;它有效地计算了每个“桶”中有多少像素。因此,每个像素根据其每个通道值的位置被放入 27 个桶中的一个(排列在一个 3 维数组中;27 的立方根是 3)。Windows 为每个颜色通道确定该颜色的强度是在范围的底部、中间还是顶部块。看起来范围大约是 0-60、60-200 和 200-255。完全不包括完全透明的像素。
然后 Windows 查找哪个桶的像素最多,忽略黑色、白色和灰色(所有三个通道都在同一范围的三分之一内的桶)。这解释了 SQL Server Management Studio 图标 - 对我们来说看起来黄色的大部分内容实际上都被转储到“白色”存储桶中并被忽略。
如果任何可接受的桶中都没有像素,则无论系统配色方案如何,程序都会获得浅蓝色叠加层。(请参阅命令提示符。)如果程序没有图标,即使 Windows 默认图标会产生蓝色或绿色覆盖,它也会获得白色/半透明覆盖。
没有什么可以阻止多个程序具有相同的高亮颜色。例如,最新的 Chrome 图标与 Windows 8 的资源管理器具有相同的黄色。
如果有平局,则存在不依赖于图像中颜色顺序的预定顺序。这可能只是找到最大值的方式的结果 - 较早检查的存储桶将继续是最大值,即使后面的存储桶并列。看起来黄色是第一个检查的桶之一。
一旦发现获胜桶,高亮颜色似乎被设置为桶范围中间某处的颜色。
测试用例(提供的数字是 RGB 值):
(255, 247, 209) ? 默认突出显示
(47, 0, 0) ? 默认突出显示
(60, 0, 0) ? 深红
(66, 0, 0) ? 深红
(165, 0, 0) ? 红色的
(128, 128, 128) ? 默认突出显示
(0, 148, 255) 和 (255, 0, 0) ?红色的
(0, 255, 0) 和 (255, 216, 0) 具有相同的面积?黄色
相同但翻转?黄色
(255, 180, 180) ? 红灯
(255, 210, 210) ? 默认突出显示
纯蓝色、纯黄色、纯红色和纯绿色,面积相同?黄色
(255, 61, 61) ? 红色的
(82, 0, 0) ? 深红
| 归档时间: |
|
| 查看次数: |
2958 次 |
| 最近记录: |