1

我的视图中有一个矩形,我想用 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)];

谢谢。

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

我用方法做了这个,这里 myRect 的原点将 CGRect 和 myBezierPath 放在视图的中心。

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

示例 1 http://i.minus.com/iguFjeqZQrsb6.png

我怎样才能做出类似的事情(将我的另一幅图放在原点的中心)?现在我有这个:

示例 2 http://i.minus.com/ifVY9UAP7hVv3.png

4

1 回答 1

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();

在此处输入图像描述

于 2013-04-05T18:00:06.320 回答