可以只渲染CALayer的一小部分吗?

问题描述 投票:0回答:0

我想检查CALayer中一个点的alpha值。对于这种渲染,整个图层对我来说太贵了。有什么方法可以让我只渲染问题点周围的一小部分CAlayer?

代码。

(BOOL) transparentPoint:(CGPoint)point
{
    unsigned char pixel[4] = {0};

    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();

    CGContextRef context = CGBitmapContextCreate(pixel, 1, 1, 8, 4, colorSpace, kCGBitmapAlphaInfoMask & kCGImageAlphaPremultipliedLast);

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

    [self.layer renderInContext:context];

    CGContextRelease(context);
    CGColorSpaceRelease(colorSpace);

    CGFloat alpha = pixel[3]/255.0;
    BOOL transparent = alpha < 0.01;
    return transparent;
}
ios objective-c core-graphics calayer
© www.soinside.com 2019 - 2024. All rights reserved.