我尝试用纯红色填充CGBitmapContext并获取CGImgRef,但图像全部透明。 这是代码
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(NULL,
1,
1,
8,
0,
colorSpace,
kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
CGFloat components[] = {1.0,0.0,0.0,1.0};
CGContextSetFillColor(context, components);
CGContextFillRect(context, CGRectMake(0, 0, 1, 1));
CGImageRef imgRef = CGBitmapContextCreateImage(context);
请不要推荐使用UIBezierPaths和其他UIKit东西。我需要使用CoreGraphics。
答案 0 :(得分:2)
问题是您忘记设置填充色彩空间。你必须这样做才能让CGContextSetFillColor
正常工作(因为它告诉它需要多少组件以及如何解释它们)。这有效:
CGFloat components[] = {1,0,0,1};
CGContextSetFillColorSpace(context, colorSpace); // <-- this was missing
CGContextSetFillColor(context, components);
// and now fill ...
答案 1 :(得分:-1)
CGContextSetFillColorWithColor(context, [UIColor redColor].CGColor)
解决了问题;顺便问一下,知道我做错了会很有趣。此外,关于CGContextSetFillColor的Apple文档说&#34;请注意,首选的API现在是CGContextSetFillColorWithColor。&#34;