核心图形剪辑不起作用

时间:2012-11-01 13:28:30

标签: objective-c ios cocoa core-graphics cgcontext

我有这个代码来为内外边界之间的区域着色。

CGContextSaveGState(context);
CGContextAddRect(context, self.bounds);
CGContextAddPath(context, inlinePath);
CGContextEOClip(context);
CGContextAddPath(context, outlinePath);
CGContextClip(context);
CGContextSetFillColorWithColor(context, _myColor.CGColor);
CGContextFillRect(context, self.bounds);
CGContextRestoreGState(context);

这是当地例行程序drawChartInContext:的一部分 当我生成这样的图像时它很有用:

UIGraphicsBeginImageContextWithOptions(self.frame.size, NO, 2.0);
[self drawChartInContext:UIGraphicsGetCurrentContext()]; 
UIImage* image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

但是,当我从drawRect拨打电话时,我只是将整个outlinePath区域填满_myColor

- (void)drawRect:(CGRect)rect
{
    CGContextRef context = UIGraphicsGetCurrentContext();
    [self drawChartInContext:context];
}

可能出现什么问题?

1 个答案:

答案 0 :(得分:0)

刚想通了。这是两个疏忽的结合:

  1. inlinePath的区域为零(特殊情况有效)
  2. myColor有1.0 alpha(配置错误)。