【发布时间】:2023-07-21 19:34:01
【问题描述】:
我的视图中有一个矩形,我想使用 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];
Example 1 http://i.minus.com/iguFjeqZQrsb6.png
我怎样才能做出类似的事情(将我的另一幅图放在原点的中心)? 现在我有了这个:
【问题讨论】:
-
有什么问题?你已经解决了这个问题。构建路径,构建它;不要使用
bezierPathWithRect,因为它会构建一个不是你想要的矩形路径。 -
这里没有实际问题。它所说的只是你思考了一些事情并(正确地)发现你错了。 (阅读文档可以防止这种情况发生。)这很好,但毫无疑问。
-
@matt 我的问题是,如果您不理解,我该如何做我想做的事。我在文档和互联网中找不到方法。我更新了我的问题。
-
我刚刚告诉过你;要么在正确的原点以
moveToPoint开始,要么从零开始并以applyTransform:移动原点 -
applyTransform是 绘制矩形然后更改原点的方式。正常的方法是先思考,提前弄清楚原点,然后从那里开始。请参阅下面的代码。
标签: objective-c xcode drawing uibezierpath cgrect