作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在屏幕外渲染中使用 CGLayerRef 用另一个图像屏蔽图像,因为它适用于文档中提到的高质量渲染
Core Graphics Layer Drawing : CGLayer objects allow your application to use layers for drawing. Layers are suited for the following: High-quality offscreen rendering of drawing that you plan to reuse.
//The context I use to mask my image with the mask image.
CGColorSpaceRef colorSpace= CGColorSpaceCreateDeviceRGB();
CGContextRef mainViewContentContext = CGBitmapContextCreate (NULL, _bigImageRect.size.width, _bigImageRect.size.height, 8, 0, colorSpace, kCGImageAlphaPremultipliedLast);
CGColorSpaceRelease(colorSpace);
//Mask image
CGContextClipToMask(mainViewContentContext,
CGRectMake(0,
-_bigImageRect.origin.y,
_bigImageRect.size.width,
_bigImageRect.size.height),
_maskImage.CGImage);
//Drawing the image on the mask image.
CGContextDrawImage(mainViewContentContext,
CGRectMake(0,
0,
_bigImageRect.size.width,
_bigImageRect.size.height),
_ImageToBeMasked.CGImage);
CGImageRef mainViewContentBitmapContext = CGBitmapContextCreateImage(mainViewContentContext);
CGContextRelease(mainViewContentContext);
UIImage*maskedImage = [UIImage imageWithCGImage:mainViewContentBitmapContext];
CGImageRelease(mainViewContentBitmapContext)
return maskedImage;
CGLayerRef layer = CGLayerCreateWithContext(mainViewContentContext, _bigImageRect.size, NULL);
CGContextDrawLayerInRect(mainViewContentContext, _bigImageRect, layer);
CGLayerRelease(layer);
//And then.. how can I do the masking using this CGLayerRef???
最佳答案
我通常编写 Swift 代码,但曾经我还必须处理屏蔽和 CGLayer。
我通过以下步骤解决了这个问题:
CGBlendMode.sourceIn
CGBlendMode.sourceIn
告诉上下文将源图像的 alpha 值与现有像素的颜色相乘。因此,掩码的不可见部分 (
alpha = 0.0
) 将保持不可见。
关于ios - 使用 CGLayerRef 和 CGContextDrawLayerInRect 屏蔽图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48734422/
我想在屏幕外渲染中使用 CGLayerRef 用另一个图像屏蔽图像,因为它适用于文档中提到的高质量渲染 Core Graphics Layer Drawing : CGLayer objects al
我是一名优秀的程序员,十分优秀!