Tag: cgpath

Swift:如何将点添加到封闭的CGPath?

我想让SKSpriteNodes沿着字母轮廓移动。 我有很多字母,但这里有一个例子: 我希望这个精灵跟着红线。 我发现这个答案主要涵盖了我的问题: 获取path在iOS UIFont中追踪一个字符 答案来自这个良好的工作示例代码: let font = UIFont(name: "HelveticaNeue", size: 64)! var unichars = [UniChar]("P".utf16) var glyphs = [CGGlyph](count: unichars.count, repeatedValue: 0) let gotGlyphs = CTFontGetGlyphsForCharacters(font, &unichars, &glyphs, unichars.count) if gotGlyphs { let cgpath = CTFontCreatePathForGlyph(font, glyphs[0], nil)! let path = UIBezierPath(CGPath: cgpath) print(path) XCPlaygroundPage.currentPage.captureValue(path, withIdentifier: "glyph \(glyphs[0])") } 然而,我仍然遇到一个问题,因为我的精灵并没有完成所有字母的字母的完整path,而是例如在这里“P”停止(从底部开始): 我尝试添加一些点,如下所示: CGPathAddLineToPoint(path, […]

CAShapeLayer的框架和边界

我正在研究CAShapeLayer 。并尝试绘制非线性CAShapeLayer 。我想将帧设置为CAShapeLayer 。因此,我可以使用CGPathGetPathBoundingBox方法从CGPathRef获取帧。 这是代码: CGMutablePathRef path = CGPathCreateMutable(); CGPathAddArc(path, NULL, rect.size.width/2, rect.size.height/2, 100, (0), (M_PI_2), NO); CGPathAddArc(path, NULL, rect.size.width/2, rect.size.height/2, 100-50, (M_PI_2), (0), YES); CGPathCloseSubpath(path); CAShapeLayer* arcLayer = [[CAShapeLayer alloc]init]; arcLayer.path = path; arcLayer.frame = CGPathGetPathBoundingBox(path); arcLayer.bounds = CGPathGetPathBoundingBox(path); [self.layer addSublayer:arcLayer]; ` 请仔细参考我的代码。我已经设置相同的框架和边界到CAShapeLayer.My的问题是,如果我没有设置边界(框架相同),那么它将不会显示我的内容或它不会显示框架内我的内容。为什么?请帮助我感谢你。

CGPathAddCurveToPoint的参数是什么意思?

我想在一天的不同时间点基于太阳的坐标以编程的方式build立一个CGPathRef 。 计算点是不是一个问题,但我想要一个CGPathRef是光滑的,认为CGPathAddCurveToPoint将是适当的。 我理解的path,转换,x和y参数,但我不确定其他人。 根据苹果公司的文档,他们是控制点,我猜他们就像在vector绘图程序中看到的,你可以调整曲线通过点的方式。 我的问题是如何select与我的坐标相关的点,而不知道那些坐标提前? 我想也许只是从每个第一个控制点减去一定数量,并将相同的数额添加到第二个控制点,但这听起来超过了简化。 是否有一个标准的方法来生成控制点,使得曲线变得“合理”? void CGPathAddCurveToPoint ( CGMutablePathRef path, const CGAffineTransform *m, CGFloat cp1x, CGFloat cp1y, CGFloat cp2x, CGFloat cp2y, CGFloat x, CGFloat y );

在多个CGPath的内部边缘绘制光晕

图片http://img403.imageshack.us/img403/9582/paths.jpg 如果通过将左图像所示的两个圆形path相加来创buildCGMutablePathRef,是否可以获得最终的CGPathRef,该图像仅表示右边图像所示的外边框? 谢谢你的帮助!

以编程方式绘制iOS 7风格的圆形

我试图find一种方法来使用核心graphics以编程方式绘制iOS 7样式图标“squircle”形状。 我不问如何绘制一个圆angular的矩形 。 一个圆形是一个超椭圆: 与常规的圆angular矩形略有不同: 这是确切的公式是容易获得的 。 然而,我不知道如何使用,例如,一个CGPath,更不用说填充它,并能够相当容易地调整它。 所有这一切与公式完全一致。 任何想法?

iOS Core Graphics:仅绘制CGPath的阴影

我正在用Core Graphics在iOS 5中绘制一个简单的path: CGMutablePathRef path = CGPathCreateMutable(); CGPathMoveToPoint( path, NULL, center.x , topMargin ); CGPathAddLineToPoint(path, NULL, center.x+20, topMargin+50); CGPathAddLineToPoint(path, NULL, center.x , topMargin+40); CGPathAddLineToPoint(path, NULL, center.x-20, topMargin+50); CGPathAddLineToPoint(path, NULL, center.x , topMargin ); 现在我想要在Overlay模式下填充它,如下所示: [[UIColor colorWithRed:0 green:0 blue:0 alpha:0.4] setFill]; CGContextAddPath(context, path); CGContextSetBlendMode (context, kCGBlendModeOverlay); CGContextFillPath(context); 这给了我完全预期的结果。 但接下来,我想创build一个浮雕效果。 我想用白色和黑色阴影来达到这样的效果: [[UIColor colorWithRed:0 green:0 blue:0 alpha:0] setFill]; […]

如何animationCAShapeLayerpath和fillColor

如何animationCAShapeLayerpath和fillColor? 如何animationstrokeEnd以显示正在绘制的path? 以及如何animationfillColor?

在哪里以及如何__bridge

我需要关于iOS中__bridge -ing的一些build议。 希望下面的SSCCE 1能更好地解释这个问题,但我需要知道如何将void*转换为NSMutableArray* ; 应该使用__bridge变体(参见代码注释)。 读了不同的桥梁,我推断,我将需要__bridge_transfer但接着我收到addObject的addObject: 最终,我想在调用CGPath之后在CGPoints中创build一个CGPath数组。 #import <Foundation/Foundation.h> void _processPathElement(void* info, const CGPathElement* element) { NSMutableArray *array = (/* WHAT BRIDGE HERE */ NSMutableArray*) info; switch (element->type) { case kCGPathElementMoveToPoint: case kCGPathElementAddLineToPoint: { CGPoint point = element->points[0]; [array addObject:[NSValue valueWithCGPoint:point]]; break; } default: break; } } int main(int argc, char *argv[]) { @autoreleasepool […]

获取在iOS UIFont中追踪字符的path

假设我在我的iOS应用程序中使用了自定义字体“Foo”。 我已经将它添加到我的项目,plist等等,我能够渲染UILabel s等。 现在,如果我想找出一系列可以“追踪”字母“P”的点,那么我将如何得到这个点的序列呢? 例如,假设我想用CGPath像绘图仪那样缓慢地绘制字母“P”… 我只需要一个数组中的CGPoints序列,如果绘制为一个path将绘制一个“P”。 我意识到,对于一些像“T”这样的字母来说,这可能是没有意义的,因为笔必须被提起才能越过“T”。 所以也许我需要一个CGPath序列… 有关如何完成此任何提示? 谢谢!

撤消/重做在iOS中进行绘图

我正在做一个绘图应用程序,我想要做撤销/重做,为此我保存CGPath的触摸结束了NSMutableArray,但我不理解如何渲染CGPaths点击撤消button EDIT1: 当我使用BezierPaths的时候,我首先决定用一个简单的方法去简单地去处理这个path,没有CGPath, 编辑2:因为我的撤消发生在段(我,部分而不是整个path被删除),我决定创build一个数组的数组,所以我做了相应的变化,现在我将在CGlayer中绘制,采取CGPath 所以这里“parentUndoArray”是数组的数组。 所以我这样做了 我有一个叫做Draw​​ingPath的类来完成绘图 //DrawingPath.h @interface DrawingPath : NSObject @property (strong, nonatomic) NSString *pathWidth; @property (strong,nonatomic) UIColor *pathColor; @property (strong,nonatomic) UIBezierPath *path; – (void)draw; @end //DrawingPath.m #import "DrawingPath.h" @implementation DrawingPath @synthesize pathWidth = _pathWidth; @synthesize pathColor = _pathColor; @synthesize path = _path; – (id)init { if (!(self = [super init] )) return […]