想象一个长矩形(可能大小为200x20)。所有面都有直边。在我的iOS应用程序中,这对我来说很容易绘制:
CGContextFillRect(context, CGRectMake(xLoc, yLoc, 200, 20));
如果我想要短边(在矩形的左侧和右侧)略微弯曲而不是直边,那该怎么办呢?代码看起来会是什么样的?
(请注意,我对CGContext绘图相对缺乏经验)
答案 0 :(得分:2)
像这样的东西(未经测试,所以要小心虫子!):
- (void)drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetStrokeColorWithColor(context, [[UIColor blackColor] CGColor]);
CGContextSetRGBFillColor(context, 0.0, 0.0, 1.0, 1.0);
CGRect rrect = CGRectMake(CGRectGetMinX(rect), CGRectGetMinY(rect), CGRectGetWidth(rect)-30, CGRectGetHeight(rect)-30);
CGFloat radius = 0.5f;
CGFloat minx = CGRectGetMinX(rrect), midx = CGRectGetMidX(rrect), maxx = CGRectGetMaxX(rrect);
CGFloat miny = CGRectGetMinY(rrect), midy = CGRectGetMidY(rrect), maxy = CGRectGetMaxY(rrect);
CGContextMoveToPoint(context, minx, midy);
CGContextAddArcToPoint(context, minx, miny, midx, miny, radius);
CGContextAddArcToPoint(context, maxx, miny, maxx, midy, radius);
CGContextAddArcToPoint(context, maxx, maxy, midx, maxy, radius);
CGContextAddArcToPoint(context, minx, maxy, minx, midy, radius);
CGContextClosePath(context);
CGContextDrawPath(context, kCGPathFillStroke);
}
答案 1 :(得分:1)
你可能会发现Jeff LaMarche的RoundedRectView类很有用,无论是直接使用实例还是看他是如何制作它们的:
http://iphonedevelopment.blogspot.com/2008/11/creating-transparent-uiviews-rounded.html