簡體   English   中英

如何獲得觸摸時的像素顏色(快速)?

[英]How to get the pixel color on touch (Swift)?

我有各種CAShapeLayers ,每種都有獨特的顏色,如下所示:

    shape1.strokeColor = UIColor(red: 85/255.0, green: 176/255.0, blue: 112/255.0, alpha: 1.0).
    shape2.strokeColor = UIColor(red: 222/255.0, green: 171/255.0, blue: 66/255.0, alpha: 1.0).CGColor

使用touchesBegan函數,我想確定是否已敲擊CAShapeLayer ,以及它是哪一個,以便進行適當的操作。 我知道可以使用hitTestCGPathContainsPoint ,但是我想使用其他方法。 如何比較點的顏色和CAShapeLayers的顏色?

任何幫助,將不勝感激

此方法應適用於找出觸摸點的像素顏色:

func colorAtPoint(point:CGPoint) -> UIColor
{
    var pixels = UnsafeMutablePointer<CUnsignedChar>.alloc(4)

    var colorSpace = CGColorSpaceCreateDeviceRGB()
    var bitmapInfo = CGBitmapInfo(CGImageAlphaInfo.PremultipliedLast.rawValue)
    var context = CGBitmapContextCreate(pixels, 1, 1, 8, 4, colorSpace, bitmapInfo)

    CGContextTranslateCTM(context, -point.x, -point.y)

    shapeLayer.renderInContext(context)


    var color:UIColor = UIColor(red: CGFloat(pixels[0])/255.0, green: CGFloat(pixels[1])/255.0, blue: CGFloat(pixels[2])/255.0, alpha: CGFloat(pixels[3])/255.0)

    pixels.dealloc(4)

    return color
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM