0
我是Core Garphics的初學者,我嘗試解決我對CGContextclip的理解。我正在做一個自定義UIButton drawrect的簡單程序如下我的CGContextclip有什麼問題。
傳遞給drawRect方法的矩形是CustomButton * button = [[CustomButton alloc] initWithFrame:CGRectMake(0,0,100,50)];
@implementation CustomButton
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self)
{
[self setBackgroundColor:[UIColor clearColor]];
}
return self;
}
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGColorRef colorRef = [[UIColor blueColor] CGColor];
CGContextSetStrokeColorWithColor(context, colorRef);
CGContextSetFillColorWithColor(context, [[UIColor blueColor] CGColor]);
CGContextSetLineWidth(context, 3.0f);
CGContextAddRect(context, rect);
CGContextStrokeRect(context, rect);
//CGContextFillRect(context, rect);
CGContextSaveGState(context);
CGContextSetStrokeColorWithColor(context, [[UIColor redColor] CGColor]);
CGContextSetFillColorWithColor(context, [[UIColor redColor]CGColor]);
CGMutablePathRef rectPath = CGPathCreateMutable();
CGPathMoveToPoint(rectPath, NULL, CGRectGetMinX(rect), CGRectGetMidY(rect));
CGPathAddLineToPoint(rectPath, NULL, CGRectGetMaxX(rect), CGRectGetMidY(rect));
CGPathAddLineToPoint(rectPath, NULL, CGRectGetMaxX(rect), CGRectGetMaxY(rect));
CGPathAddLineToPoint(rectPath, NULL, CGRectGetMinX(rect), CGRectGetMaxY(rect));
CGPathCloseSubpath(rectPath);
CGContextAddPath(context, rectPath);
CGContextClip(context);
CGContextStrokePath(context);
//CGContextFillPath(context);
CGContextRestoreGState(context);
CGColorRelease(colorRef);
}
@end
我期待與尺寸(0,0,100,50)的全部顏色在藍色和半紅色裏面用紅色着色。我得到藍色的矩形,但紅色的矩形在我的上下文中不可見。
我已經通過一些解決方案在這裏,也在一些博客,但對我的錯誤眼睛代碼看起來簡單和罰款。我的剪輯出了什麼問題。
謝謝你的時間和迴應。
是的,這解決了我的問題。謝謝。 – slysid