如何用bezier路径绘制rect?

时间:2013-04-05 15:29:27

标签: objective-c xcode drawing uibezierpath cgrect

我的视图中有一个矩形,我想用UIBezierPath在该矩形中绘制一个图形。

我认为那个方法

UIBezierPath myBezierPath = [UIBezierPath bezierPathWithRect:myRect]; 

将创建一个名为myBezierPath的空UIBezierPath,其中包含myRect提供的边界,然后我可以使用moveToPoint和addLineToPoint“绘制”myBezierPath。但是,那个代码在myRect中创建了一个正方形(我是那条路径,所以描边方块)。 但我不希望他被人看见。如果我尝试这个,我只想要那个:

NSLog(@"myBezierPath rect size %f,%f",myBezierPath.bounds.size.width,myBezierPath.bounds.size.height);

它返回myRect的宽度和高度。 因此我可以在我的moveToPoint方法和addLine方法中使用它。例如:

[myBezierPath addLineToPoint: CGPointMake(suit.bounds.size.width/2, 0)];

感谢。

我的问题是:«如何使用bezier路径绘制矩形?»

我用方法制作了这个,这里myRect有源于将CGRect和myBezierPath放在视图的中心。

myBezierPath = [UIBezierPath bezierPathWithRoundedRect:myRect cornerRadius:20.0];

Example 1 http://i.minus.com/iguFjeqZQrsb6.png

我如何制作相似的(将我的另一幅画放在原点的中心)? 现在我有了这个:

Example 2 http://i.minus.com/ifVY9UAP7hVv3.png

1 个答案:

答案 0 :(得分:2)

示例(您的界面中需要一个UIImageView):

CGRect r = self.myImageView.bounds;
UIGraphicsBeginImageContextWithOptions(r.size, NO, 0);
UIBezierPath* p = [UIBezierPath bezierPathWithRoundedRect:CGRectInset(r,10,10) cornerRadius:10];
[p stroke];
CGPoint c = CGPointMake(r.size.width/2.0, r.size.height/2.0);
p = [UIBezierPath bezierPath];
[p moveToPoint:CGPointMake(c.x-30, c.y)];
[p addLineToPoint:CGPointMake(c.x, c.y-30)];
[p addLineToPoint:CGPointMake(c.x+30, c.y)];
[p addLineToPoint:CGPointMake(c.x, c.y+30)];
[p closePath];
[p fill];
self.myImageView.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

enter image description here