c# - 在C#中生成颜色渐变

标签 c# .net colors system.drawing.color

我的问题类似于 the question here ,除了我正在使用 C#。

我有两种颜色,并且有一个预定义的步骤。如何检索作为两者之间渐变的 Color 列表?

这是我尝试过的一种方法,但没有奏效:

int argbMax = Color.Chocolate.ToArgb();
int argbMin = Color.Blue.ToArgb();
var colorList = new List<Color>();

for(int i=0; i<size; i++)
{
    var colorAverage= argbMin + (int)((argbMax - argbMin) *i/size);
    colorList.Add(Color.FromArgb(colorAverage));
}

如果您尝试上面的代码,您会发现 argb 的逐渐增加并不对应于颜色的视觉逐渐增加。

对此有什么想法吗?

最佳答案

您必须提取 R、G、B 分量并分别对它们中的每一个执行相同的线性插值,然后重新组合。

int rMax = Color.Chocolate.R;
int rMin = Color.Blue.R;
// ... and for B, G
var colorList = new List<Color>();
for(int i=0; i<size; i++)
{
    var rAverage = rMin + (int)((rMax - rMin) * i / size);
    var gAverage = gMin + (int)((gMax - gMin) * i / size);
    var bAverage = bMin + (int)((bMax - bMin) * i / size);
    colorList.Add(Color.FromArgb(rAverage, gAverage, bAverage));
}

关于c# - 在C#中生成颜色渐变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2011832/

相关文章:

c# - ASP.NET Identity 默认的 ApplicationUserManager 是否实现了 IUserEmailStore?

c# - 将类的多个属性传递给函数并返回自定义属性的值

c# - 如何使用 xUnit 进行调试?

performance - 许多具有相同几何形状和 Material 的网格,我可以更改它们的颜色吗?

graphics - 了解颜色

c# - 包含 silverlight 控件的母版页

c# - 如何将 AWS ASP.NET Core 日志记录添加到 ASP.NET Core 2.0 Razor Pages 应用程序?

.net - 根据项目配置有条件地包含文件

.net - Entity Framework 和Exists子句

java - java.awt.Color.getColor(String colorName) 是如何工作的?