相关疑难解决方法(0)

用于创建色轮的功能

这是我多次伪解的东西,从来没有找到解决方案.

问题是想出一种生成N颜色的方法,尽可能区分N参数.

language-agnostic algorithm colors color-space

67
推荐指数
5
解决办法
2万
查看次数

用于在两个其他之间找到颜色的算法 - 在绘制颜色的颜色空间中

当混合蓝色和黄色涂料时,结果是某种绿色.

我有两种颜色:

blue =(0,0,255)

和黄色=(255,255,0)

找到混合两种颜色的结果的rgb颜色的算法是什么,就像使用涂料时一样?算法产生的颜色不一定非常精确.对于上面的例子,它只需要看起来像某种绿色.

提前致谢.

编辑:这个用Go编写的函数,根据LaC的回答为我工作.

func paintMix(c1, c2 image.RGBAColor) image.RGBAColor { 
    r := 255 - ((255 - c1.R) + (255 - c2.R))
    g := 255 - ((255 - c1.G) + (255 - c2.G))
    b := 255 - ((255 - c1.B) + (255 - c2.B))
    return image.RGBAColor{r, g, b, 255}
}
Run Code Online (Sandbox Code Playgroud)

编辑#2 Allthought它设法混合青色和黄色,蓝色和黄色之间的混合变成黑色,这似乎不对.我还在寻找一种有效的算法.

编辑#3这是Go中一个完整的工作示例,使用HLS颜色空间:http://go.pastie.org/1976031.谢谢Mark Ransom.

编辑#4看起来更好的颜色混合的前进方式是使用Kubelka-Munk方程

algorithm rgb colors go color-space

27
推荐指数
2
解决办法
4417
查看次数

如何使用CAGradientLayer绘制渐变色轮?

我从这些链接中得到了一些参考 -

我已经经历了"HSV色彩空间"的概念.但我想借助于使用RGB绘制色轮CAGradientLayer.

这是使用简单的RGB颜色数组制作色轮的代码片段UIBezierPath-

func drawColorWheel()
{
    context?.saveGState()

    range = CGFloat(100.00 / CGFloat(colorArray.count))

    for k in 0 ..< colorArray.count
    {

        drawSlice(startPercent: CGFloat(k) * range, endPercent: CGFloat(CGFloat(k + 1) * range), color: colorArray.object(at: k) as! UIColor)
    }

    context?.restoreGState()
}

func drawSlice(startPercent: CGFloat, endPercent: CGFloat, color: UIColor)
{        
    let startAngle = getAngleAt(percentage: startPercent)
    let endAngle = getAngleAt(percentage: endPercent)

    let path =  getArcPath(startAngle: startAngle, endAngle: endAngle)
    color.setFill()
    path.fill()
}
Run Code Online (Sandbox Code Playgroud)

getAngleAt()getArcPath()是私人活动的角度来绘制路径.

这是我的代码的最终输出 …

core-graphics ios uibezierpath cagradientlayer swift3

4
推荐指数
1
解决办法
1191
查看次数

如何"旋转"一种颜色的色调?

我希望生成与给定UIColor(Triadic,Analogues,Complement等)相符的颜色.

我读了很多像帖子这个这个这个.在上一篇文章中,回答者建议去easyrgb.com.所以我去了那里.我了解到,如果我想生成那些颜色方案,我需要在一定程度上"旋转"色调.例如,对于三重色,我需要将其旋转±120度.

我知道我可以通过调用获得颜色的色调getHue(:saturation:brightness:),但我怎么能"旋转"呢?方法返回的色调不是一个数字吗?0到1之间的数字?这对我没有意义!

我认为第一篇文章可能有答案,但代码是用python编写的.我只学了一点python,所以我不太清楚这意味着什么:

h = [(h+d) % 1 for d in (-d, d)]           # Rotation by d
Run Code Online (Sandbox Code Playgroud)

从评论中,我看到这条线以某种方式将色调旋转了d度.但我不知道那种语法意味着什么.

任何人都可以告诉我如何旋转色调,或将上述代码转换为快速?

colors uicolor ios swift

2
推荐指数
1
解决办法
705
查看次数