在我正在寫的可視化應用程序中,我想使用用路徑創建的遮罩來形成圖形。該圖形是一個水平矩形條,其內部繪製了各種形狀。在這個矩形條的頂部,我想繪製一個橢圓來充當一個遮罩,它對矩形條進行整形,使其看起來像在橢圓內繪製。我該怎麼做呢?iPhone石英。如何使用路徑而不是位圖創建遮罩?
在這個簡化的例子中,我正在嘗試 - 並且無法通過使用各種混合模式在其上面繪製橢圓來使背景藍色矩形顯示爲藍色橢圓。
- (void)drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
[[colorDictionary objectForKey:@"blueSolid"] setFill];
CGContextFillRect(context, self.bounds);
//CGContextSetBlendMode(context, kCGBlendModeNormal);
CGContextSetBlendMode(context, kCGBlendModeDestinationIn);
CGContextFillEllipseInRect(context, self.bounds);
}
謝謝, 道格
UPDATE:解 簡言之:剪切路徑。 DOOH!下面的代碼片段創建了我在之後是紅色背景上的藍色橢圓的效果。請注意,藍色橢圓是通過將藍色矩形約束爲橢圓形狀而創建的。這是我需要的。涼。
希望這可以幫助別人。剪切路徑是超級強大。乾杯。
CGContextRef context = UIGraphicsGetCurrentContext();
[[colorDictionary objectForKey:@"redSolid"] setFill];
CGContextFillRect(context, self.bounds);
CGContextBeginPath(context);
CGContextAddEllipseInRect(context, CGRectInset(self.bounds, 32, 32));
CGContextClip(context);
[[colorDictionary objectForKey:@"blueSolid"] setFill];
CGContextFillRect(context, self.bounds);
在仔細查看Quartz編程文檔後,我回答了我自己的問題。希望這可以幫助某人。 – dugla 2009-12-17 16:17:08