选色!拾取,获得一些黑色通道或Alpha混合后颜色不准确

时间:2018-07-05 13:08:20

标签: ios swift core-graphics draw color-picker

问题:拇指颜色不是很完美,但是视图呈现了完美的颜色。

从滑块中选择颜色后,我需要更新拇指颜色。 我正在尝试使用下面的代码选择颜色,但是颜色带有一些黑色成分。我认为这是因为Alpha混合,所以我尝试了所有可行的AWS Boto 3 docs混合模式,但要么将全黑或黄色都与黑色混合了,如果将滑块背景设置为白色,则所选择的颜色将具有更白的颜色。因此,我确定是由于滑块的背景所致。奇怪的是,如果我单击中间的圆圈以选择颜色,然后单击滑块,它就会为我提供完美的颜色。我正在使用相同的功能从中间圆和滑块轨道获取颜色。

func getPixelColorAtPoint(point:CGPoint) -> (red: Int, green: Int, blue:Int, alpha: Int) {
    let pixel = UnsafeMutablePointer<CUnsignedChar>.allocate(capacity: 4)
    let colorSpace = CGColorSpace(name: CGColorSpace.sRGB)
    let bitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.premultipliedLast.rawValue)
    let context = CGContext(data: pixel, width: 1, height: 1, bitsPerComponent: 8, bytesPerRow: 4, space: colorSpace!, bitmapInfo: bitmapInfo.rawValue)

    context?.translateBy(x: -point.x, y: -point.y)
    layer.render(in: context!)
    //let color:UIColor = UIColor(red: CGFloat(pixel[0])/255.0, green: CGFloat(pixel[1])/255.0, blue: CGFloat(pixel[2])/255.0, alpha: CGFloat(pixel[3])/255.0)

    pixel.deinitialize(count: 4)
    return (Int(pixel[0]), Int(pixel[1]), Int(pixel[2]), Int(pixel[3]))
}

我得到的结果是,您可以看到底视图呈现了确切的颜色,但是两个拇指都有一些黑色的混合。 CGBlendModeenter image description here

要理解这个问题,我认为您必须检查项目enter image description here不能在此处发布所有代码:-)

0 个答案:

没有答案