首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何获得任何背景图像的相反颜色

如何获得任何背景图像的相反颜色
EN

Stack Overflow用户
提问于 2010-12-13 15:48:11
回答 4查看 8.4K关注 0票数 15

如何根据背景自动获得正确的颜色?如果其背景图像较暗,则会自动将字体颜色更改为较亮的颜色。这有可能吗?有什么想法吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-12-13 17:26:26

David的回答大体上是非常有效的。但是有一些选择,我会提到其中的一些。首先,最天真的方法是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function InvertColor(const Color: TColor): TColor;
begin
    result := TColor(Windows.RGB(255 - GetRValue(Color),
                                 255 - GetGValue(Color),
                                 255 - GetBValue(Color)));
end;

但这受到#808080问题的困扰(为什么?)。一个非常好的解决方案是David的,但对于一些不幸的背景颜色来说,它看起来非常糟糕。虽然文本肯定是可见的,但它看起来很可怕。其中一种“不幸”的背景颜色是#008080。

通常,如果背景是“浅”,我更喜欢文本是黑色的,如果背景是“暗”,则文本是白色的。我就是这样做的

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function InvertColor(const Color: TColor): TColor;
begin
  if (GetRValue(Color) + GetGValue(Color) + GetBValue(Color)) > 384 then
    result := clBlack
  else
    result := clWhite;
end;

此外,如果您使用的是Delphi 2009+并且目标是Windows Vista+,那么您可能会对TLabelGlowSize参数感兴趣。

票数 26
EN

Stack Overflow用户

发布于 2010-12-13 16:10:49

我使用下面的代码为我提供与指定颜色形成对比的颜色:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function xorColor(BackgroundColor: TColor): TColor;
begin
  BackgroundColor := ColorToRGB(BackgroundColor);
  Result := RGB(
    IfThen(GetRValue(BackgroundColor)>$40, $00, $FF),
    IfThen(GetGValue(BackgroundColor)>$40, $00, $FF),
    IfThen(GetBValue(BackgroundColor)>$40, $00, $FF)
  );
end;
票数 13
EN

Stack Overflow用户

发布于 2014-01-04 19:39:27

我尝试基于“线性”配色方案计算对比度,但它在粉色和青色输入值上确实不是很好。更好的方法是基于RGB公式进行计算:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
brightness = sqrt( .241 * R^2 + .691 * G^2 + .068 * B^2 ) 

在Delphi中,我创建了这个子例程:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function GetContrastingColor(Color: TColor): TColor;
var r,g,b:double;i:integer;
begin
Color := ColorToRGB(Color);
r:=GetRValue(Color) ;
g:=GetGValue(Color) ;
b:=GetBValue(Color) ;
i:=round( Sqrt(
      r * r * 0.241 +
      g * g * 0.691 +
      b * b * 0.068));
if (i > 128) then   // treshold seems good in wide range
  Result := clBlack
else
  Result := clWhite;
end;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4430598

复制
相关文章
android AutoCompleteTextView 自定义BaseAdapter
最近项目中需要做搜索功能,实现类似 Google、Baidu 搜索的 下拉提示效果。Android为我们提供了 AutoCompleteTextView 控件来完成此功能。 网上好多例子都是简单使用
庞小明
2018/03/07
1.5K0
android AutoCompleteTextView 自定义BaseAdapter
Android中的AutoCompleteTextView的使用
最终的效果如下: main.xml代码如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://sc
hbbliyong
2018/03/06
6930
Android中的AutoCompleteTextView的使用
获得焦点与失去焦点事件
获得焦点事件(onfocus)是当某个元素获得焦点时触发事件处理程序。
全栈程序员站长
2022/09/07
6K0
5.AutoCompleteTextView、自定义广播
新建信息 布局:自动出来的是系统的组件,里面是listview,写ontextchanglis也行 <LinearLayout xmlns:android="http://schemas.androi
六月的雨
2018/05/14
6910
焦点事件
焦点详解:使浏览器能够区分用户输入的对象,当一个元素有焦点的时候就可以接收用户的输入 1.点击 2.tab 3.js
河湾欢儿
2018/09/06
3.2K0
Android开发工程师文集-相关控件的讲解,五大布局
大家好,我是 Vic,今天给大家带来Android开发工程师文集-相关控件的讲解,五大布局的概述,希望你们喜欢
达达前端
2019/07/03
5780
WPF Window 窗口获得焦点和失去焦点事件
Window 窗口获得焦点和失去焦点事件(窗口变为背景窗口、窗口切换等都引起窗口焦点失去) Activated获得焦点事件 和 Deactivated失去焦点的事件: Activated: 获得焦点 (首次打开软件时;由别的软件切换回当前软件时;点击当前软件在任务栏的按钮时) Deactivated:失去焦点,与Activated正好相反,(Deactivated = de + activated) 使用方法有两种: 第一种是在XAML中声明,然后在后台书写执行代码:
全栈程序员站长
2022/09/12
4.8K0
Material Design整理(一)——TextInputLayout
github地址:https://github.com/shuaijia/MaterialDesignProject 添加依赖 TextInputLayout是在Material Design中的,如
蜻蜓队长
2018/08/03
5050
Material Design整理(一)——TextInputLayout
笔记32 | UI系列之EditText和AutoCompleteTextView
地址 http://blog.csdn.net/xiangyong_1521/article/details/78499706 目录 EditText AutoCompleteTextView 附 ---- ---- 1.EditText 简单来说说EditText这个控件,这个就相当于我们平常web开发中的文本输入框,我们如果要使用EditText,可以在布局文件中声明一个这个元素即可,下面就是一个简单的EditText的控件声明: <EditText android:id="@+id
项勇
2018/06/19
4720
Android-使用AutoCompleteTextView进行动态匹配
布局文件如下: 一个:AutoCompleteTextView(只能选择一次) 一个:MultiAutoCompleteTextView(可以进行多次选择)
圆号本昊
2021/09/24
6230
Android-使用AutoCompleteTextView进行动态匹配
失去焦点和获得焦点发生事件(js)
{ alert(‘请确认您输入格式是否正确!‘); }
全栈程序员站长
2022/09/07
9.1K0
jquery 绑定事件 - blur() 失去焦点 - focus() 获取焦点
可以看到当获取焦点的时候,就立即弹出alert()。 其实通过focus()函数只是简单用来初始化文本框的焦点输入的而已,如下:
Devops海洋的渔夫
2019/05/30
12.4K0
自动完成文本框(AutoCompleteTextView)
AutoCompleteTextView控件是Android中实现自动为完成文本框的功能,常常和Adapter搭配使用.
李小白是一只喵
2020/04/24
1.6K0
jquery中失去焦点事件_easyui失去焦点事件没触发
事件会在获得焦点的时候触发,既可以是鼠标行为,也可以是按tab键导航触发的行为,并且绑定一个处理方法。
全栈程序员站长
2022/09/20
4.9K0
js焦点轮播图
汇集网上焦点轮播图的实现方式,自己试了下,不过鼠标悬浮停止动画和鼠标离开动画播放好像没生效,不太明白,最后两行代码中,为什么可以直接写stop和play。不用加括号调用函数么?求懂的大神指点! 所用知识点: 1.DOM操作 2.定时器 3.事件运用 4.Js动画 5.函数递归 6.无限滚动大法(可以用js实现一个假图的制作。不过说实话一直理解不了假图的作用原理) <style> * { margin: 0; padding: 0;
蓓蕾心晴
2018/04/12
12.5K0
自动完成文本框AutoCompleteTextView实现快速输入
上一期学习的Spinner的使用,掌握的怎么样?本期一起来学习AutoCompleteTextView的使用。 一、认识AutoCompleteTextView AutoCompleteTextView是自动完成文本框,从EditText派生而出,实际上它也是一个文本编辑框,但它比普通编辑框多了一个功能:当用户输入一定字符之后,自动完成文本框会显示一个下拉菜单,供用户从中选择,当用户选择某个菜单项之后,AutoCompleteTextView按用户选择自动填写该文本框。 AutoCom
分享达人秀
2018/02/05
1.6K0
自动完成文本框AutoCompleteTextView实现快速输入
《Monkey Android》第15课Spinner和AutoCompleteTextView
Spinner,俗称下拉列表,它提供了一组固定的值或选项,允许用户从中选择一个作为默认的状态。
GitOPEN
2019/01/29
6020
《Monkey Android》第15课Spinner和AutoCompleteTextView
点击加载更多

相似问题

如何在安卓和iOS (Xamarin Forms)上获得键盘高度?

24

OnAppearing在iOS和安卓上的不同

20

translateY在安卓和iOS上的不同

12

Xamarin镜像在iOS、安卓和PCL上的使用

11

Xamarin在安卓和ios中形成不同大小的ToolbarItem

217
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文