2012-01-07 28 views
0

這是我的代碼有:CoreGraphics中的代碼是賺不到的中空形狀,如預期

CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGColorRef redColor = [UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:1.0].CGColor; 

CGRect rectangle = CGRectMake(100, 100, 100, 100); 
    CGRect inside = CGRectMake(120, 120, 60, 60); 



CGContextSetFillColorWithColor(context, redColor); 
CGContextSetBlendMode(context, kCGBlendModeNormal); 
CGContextFillRect(context, rectangle); 
CGContextSaveGState(context); 

CGContextSetBlendMode(context, kCGBlendModeSourceOut); 
CGContextFillRect(context, inside); 
CGContextRestoreGState(context); 

我試圖使內部呈中空形狀,而是它給了我一個紅色正方形(如當在背景中的UIView是白色時,在中間有一個黑色的方塊。

有關如何在此處使圖形變得透明的任何想法?

回答

5

有幾種方法可以用矩形填充空心矩形。一種方法是創建一個包含兩個矩形的路徑,並使用even-odd rule填充它。

CGContextRef gc = UIGraphicsGetCurrentContext(); 
CGContextBeginPath(gc); 
CGContextAddRect(gc, CGRectMake(100, 100, 100, 100)); 
CGContextAddRect(gc, CGRectMake(120, 120, 60, 60)); 
CGContextSetFillColorWithColor(gc, [UIColor redColor].CGColor); 
CGContextEOFillPath(gc); 
相關問題