让我们列出你发布优秀和最喜欢的扩展方法的答案.
要求是必须发布完整代码并提供示例和如何使用它的说明.
基于对该主题的高度关注,我在Codeplex上设置了一个名为extensionoverflow的开源项目.
请标记您的答案并接受将代码放入Codeplex项目中.
请发布完整的源代码而不是链接.
Codeplex新闻:
24.08.2010 Codeplex页面现在在这里:http://extensionoverflow.codeplex.com/
11.11.2008 XmlSerialize/XmlDeserialize现在已实现并且已经过单元测试.
11.11.2008仍有更多开发人员的空间.;-) 现在加入!
11.11.2008第三个贡献者加入了ExtensionOverflow,欢迎来到BKristensen
11.11.2008 FormatWith现在已实现且已经过单元测试.
09.11.2008第二个贡献者加入了ExtensionOverflow.欢迎来到chakrit.
09.11.2008我们需要更多开发人员.;-)
我想展示一些像这个例子的图像
填充颜色由数据库中的字段决定,颜色为十六进制(例如:ClassX - >颜色:#66FFFF).现在,我想用所选颜色显示填充上方的数据(如上图所示),但我需要知道颜色是暗还是浅,所以我知道这些单词应该是白色还是黑色.有办法吗?TKS
我正在绘制一个颜色选择按钮,我正在寻找一个漂亮而简单的公式,以获得RGB中给定背景颜色的良好文本颜色(前景).
一个简单的尝试就是采用补色,但这会产生奇怪的按钮,用于纯蓝色或纯红色等颜色.
有没有众所周知的事情呢?
如果它很重要,我正在使用QT.
我希望我网站上的用户能够选择十六进制颜色,我只想显示深色的白色文本和浅色的黑色文本.你能用十六进制代码(最好是PHP)来计算亮度吗?
给定背景颜色,如何获得使其在背景颜色上可读的前景色?
我的意思是在程序中自动计算前景色.
或者简化问题,如果从白/黑中选择前景色,如何在程序中进行选择?
我不太了解颜色组成,所以我想出了这个算法,它将根据试验错误基础上的字体颜色选择背景颜色:
public class BackgroundFromForegroundColorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (!(value is Color))
return value;
Color color = (Color)value;
if (color.R + color.G + color.B > 550)
return new SolidColorBrush(Colors.Gray);
else if (color.R + color.G + color.B > 400)
return new SolidColorBrush(Colors.LightGray);
else
return new SolidColorBrush(Colors.White);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
Run Code Online (Sandbox Code Playgroud)
我做了一些谷歌搜索,但我没有找到任何非常正式的关于可以计算背景颜色的不同方式,以获得与字体颜色良好的对比效果.
所以我的问题是:是否有更"正式"的方法来选择良好的背景以获得良好的对比?或者,您将如何处理选择背景颜色,其唯一目的是使文本尽可能可读,无论其字体颜色如何?
快速更新
更多上下文:我只是想显示一些文本的预览(例如"快速的棕色狐狸跳过懒狗"),用户在那里选择字体颜色,重量,字体等.然而我对此感兴趣看看可以做些什么,无论是超级简单还是更复杂.
最后编辑
我决定采用所H.B.建议的:它似乎与我尝试的所有颜色都很好,不像我之前的算法,前景并不总是与背景正确对比.我很想知道是否有一个公式可以为给定前景提供"最佳"背景,但是对于我需要的黑/白工作就好了.这是我当前形式的代码: …
我从系统中得到了一份Knowncolor列表,但是我想删除一些太暗的内容并使前景字符看不见.我尝试了以下代码,但KnownColor.Black仍然出现.无论如何,他们在黑暗中命令他们?
if (knownColor > KnownColor.Transparent && knownColor < KnownColor.MidnightBlue && knownColor < KnownColor.Navy)
{
//add it to our list
colors.Add(knownColor);
}
Run Code Online (Sandbox Code Playgroud)