计算不同于背景和前景的颜色

Posted

技术标签:

【中文标题】计算不同于背景和前景的颜色【英文标题】:Calculate color that differs from background and foreground 【发布时间】:2013-06-17 15:14:58 【问题描述】:

看下图

我指定了三种颜色:背景、前景和边框。他们在我看来还不错。用户只能更改背景和前景色。如何自动计算框架颜色并确保它不同于背景颜色和前景色(如果这种颜色看起来不会太糟糕那就太好了)。

编辑

将给定的颜色视为默认颜色架构。因此,默认使用 3 种硬编码颜色。但是,用户可以设置自定义背景和/或前景色。因此,即使默认背景/前景色的帧颜色已知,也应该为用户能够指定的所有自定义背景/前景色自动计算。

常量:

bkg_color - 默认背景颜色 frg_color - 默认前景色 frame_color - 默认框架颜色

输入:

custom_bkg_color - 自定义背景颜色 custom_frg_color - 自定义前景色

输出:

custom_frame_color =
    f(bkg_color, frg_color, frame_color, custom_bkg_color, custom_frg_color)

颜色是 24 位 RGB。图片只是为了形象化。

【问题讨论】:

【参考方案1】:

你确定图片一定是那个形状吗?如果是,那么您只需要获取左上角(第一个像素)和中心像素的像素颜色即可获得背景(第一个像素)和前景(中心像素)的颜色。然后你可以例如计算它们之间的平均值,这会给你一个不同的颜色。如果它们之间相似,则“平均”颜色可能与其他两种颜色非常相似。如果是这种情况,你可以做一些其他的操作。

【讨论】:

以上是关于计算不同于背景和前景的颜色的主要内容,如果未能解决你的问题,请参考以下文章

具有背景颜色和透明前景图像的 UIButton 自定义类型不起作用

用搜索词过滤JTable而不丢失背景颜色

场景中前景和背景的区别

Swift - 状态栏颜色显示(字体背景)

如何在 Eclipse 中修改代码辅助中非活动行的颜色?

怎么设置Visual Studio代码窗口背景颜色