2

最终,我正在研究用于 iPhone 的框模糊功能。

该函数将获取 UIImage 并绘制透明副本,首先到侧面,然后获取该图像并在上方和下方绘制透明副本,返回一个很好的模糊图像。

阅读使用 Quartz 2D Programming Guide 的绘图,建议使用 CGLayers 进行此类操作。

指南中的示例代码对我来说有点难以理解,所以我希望有人向我展示一个非常简单的示例,该示例将UIImage转换为CGLayer,然后我将绘制副本并以UIImage的形式返回。

如果值是硬编码的(为简单起见),那就没问题了。这只是为了我的头脑,而不是为了生产代码。

4

1 回答 1

2
UIImage *myImage = …;
CGLayerRef layer = CGLayerCreateWithContext(destinationContext, myImage.size, /*auxiliaryInfo*/ NULL);
if (layer) {
    CGContextRef layerContext = CGLayerGetContext(layer);
    CGContextDrawImage(layerContext, (CGRect){ CGPointZero, myImage.size }, myImage.CGImage);

    //Use CGContextDrawLayerAtPoint or CGContextDrawLayerInRect as many times as necessary. Whichever function you choose, be sure to pass destinationContext to it—you can't draw the layer into itself!

    CFRelease(layer);
}

从技术上讲,这是我的第一个 iPhone 代码(我只在 Mac 上编程),所以要小心。不过,我之前使用过 CGLayer,据我所知,Quartz 在 iPhone 上并没有什么不同。

…并以 UIImage 的形式返回。

我不确定如何做这部分,从未使用过 UIKit。

于 2009-08-17T18:39:09.767 回答