有没有一种简单的方法来混合两个 System.Drawing.Color 值?
有没有一种简单的方法来混合两个 System.Drawing.Color 值?或者我是否必须编写自己的方法来获取两种颜色并将它们组合起来?
如果我这样做,人们会怎么做呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
有没有一种简单的方法来混合两个 System.Drawing.Color 值?或者我是否必须编写自己的方法来获取两种颜色并将它们组合起来?
如果我这样做,人们会怎么做呢?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
我正是为此目的编写了一个实用方法。 :)
I wrote a utility method for exactly this purpose. :)
如果您想以人眼看起来更自然的方式混合颜色,您应该考虑在与 RGB 不同的颜色空间中工作,例如 L*a*b*、HSL、HSB。
有一篇很棒的关于色彩空间的代码项目文章以及 C# 中的示例。
您可能喜欢使用 L*a*b*,因为它旨在线性化颜色差异的感知,因此应该产生优雅的渐变。
If you want to blend colours in a way that looks more natural to the human eye, you should consider working in a different colour space to RGB, such as L*a*b*, HSL, HSB.
There a great code project article on colour spaces with examples in C#.
You may like to work with L*a*b*, as it was designed to linearise the perception of color differences and should therefore produce elegant gradients.
我认为混合一系列颜色更容易,以防万一你想混合超过 2 种颜色
这是我的函数:
数组必须是颜色列表
使用 :
I think its easier to blend an array of colors, in case you want to blend more then 2
Here is my function:
The array must be as a List of color
Use :
要通过使用 alpha 混合来组合两种颜色,可以采用以下方法:
To combine two colors by using alpha blending the following method can be taken: