Tag: cgpath

适合UIBezierPath / CGPath圈

我需要将任意形状的pathassembly到一个圆的内部。 我可以通过计算大小,构build目标矩形,然后缩放path以适合目标矩形,来适应圆的矩形path。 let targetSize = circleDiameter / sqrt(2) let destRect = CGRect(x: 0, y: 0, width: targetSize, height: targetSize) // … Scale the path to the rect, using boundingBox of path. 但是扩展过程不是问题; 这真的是如何计算所需的规模。 基于边界框的方法对于非矩形形状提供了很差的适应性,并且对于诸如圆形的形状很不适合。 任何人都可以提出一种方法来适应任何一个圆的内部path? 谢谢。 [编辑 – 以后大量的研究] 在这个图像中可以看到问题: 蓝色矩形表示原始图像,修剪到path。 红色圆圈是最小的边界圆。 绿色矩形表示边界圆的边界框。 我需要计算红圈,所以我可以用它来缩放path。 原来这就是所谓的最小包围圆问题(AKA最小的围合圆)。 唉,我找不到任何已知algorithm的Swift或Objective-C实现,并可能需要解决一些Java / JS / C ++代码。 如果有人能节省我的时间,请做! 温暖的模糊入境。 [另一个编辑,时间飞逝] 从中国的angular度来看,这是一个相当“有趣”的问题。 […]

从另一个path的线宽轮廓生成一个CGPath

我可能不会用最好的方式解释这个,所以请忍受我。 我有一个在MKMapView对象之上绘制的CGPath: 我能够实现这一目标的方法是为较暗的蓝线创build一个CGPath,然后创build该path的副本,然后用半透明的蓝色笔触较厚的版本。 以下是我目前使用的代码: // set the shadow around the path line CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSaveGState(context); CGContextSetRGBStrokeColor(context, 0.0f, 0.0f, 0.0f, 0.0f); CGContextSetRGBFillColor(context, 0.0f, 0.0f, 1.0f, 0.4f); CGPathRef shadowPath = CGPathCreateCopyByStrokingPath(self.path.CGPath, NULL, 80.0f, kCGLineCapRound, kCGLineJoinRound, 0.0f); CGContextBeginPath(context); CGContextAddPath(context, shadowPath); CGContextDrawPath(context, kCGPathFillStroke); CGContextRestoreGState(context); CGPathRelease(shadowPath); 工作得很好,到目前为止没有错。 然而,我想要做的是获得一个更厚的半透明蓝色区域轮廓的CGPathRef。 下面是另一张屏幕截图,显示我想要的这个伪path(手绘为红色): 这怎么可能?

如何在iOS中创build多行string或多行标签作为CGPath?

API是否支持这个? 如果不是,我怎么办呢? Core Text中有CTFontCreatePathForGlyph ,可以将单个字符转换为path。 我可以在循环中使用它来创build我的string作为path,但我不得不处理间距和字距以及所有其他的讨厌的东西。 我正在寻找一个stringpath,如果它是用相同的字体和大小的UILabel绘制,看起来是相同的。

如何从SWIFT中的SKSpriteNode创buildCGPath

我有一个SKSpriteNode与电平生成器创build。 我需要使用CGPath创build完全相同的形状。 self.firstSquare = childNodeWithName("square") as! SKSpriteNode var transform = CGAffineTransformMakeRotation(self.firstSquare.zRotation) let rect = CGRect(origin: self.firstSquare.position, size: self.firstSquare.size) let firstSquareCGPath:CGPath=CGPathCreateWithRect(rect, &transform) print(self.firstSquare.position) => firstSquare position(52.8359451293945,-52.9375076293945) 为了检查我的CGPath是否已经创build,我用CGPath创build了一个SKShapeNode: let shape:SKShapeNode=SKShapeNode(path:path) shape.fillColor = self.getRandomColor() addChild(shape) print(shape.position) =>形状位置(52.8359451293945,-52.9375076293945) 结果不是我所期望的。 所以我不知道我的CGPath是否是错误的,或者是当我在SKShapeNode中转换它,我失去了初始的精灵属性。 为了理解为什么我需要这样做,请阅读这个堆栈 编辑1,2 我补充说: shape.position = self.firstSquare.position 我得到了: 编辑3: 我上面更新了我的解释,现在我的firstSquare的定位点(0.5,0.5)

获取UIBezierPath笔画的大纲path

我有一个UIBezierPath笔画,现在我想得到笔画的轮廓path(不是笔画的path本身),有没有办法我可以得到这个? 或者至lessNSLog的UIBezierPath中风的轮廓path? 谢谢

CGPath大纲

我正在绘制一个CGPath,因为它的笔画是中风的。 基本上我想要一个使用CGPath绘制一条线。 然后我想回到最后一个CGPath的两边画线,使其成为轮廓线。 这条线可以弯曲和转弯,但我总是需要外面的两条线来跟随。 编辑:我需要能够使中间的行透明,但轮廓坚实的黑色。

CGPath和UIBezierPath()有什么区别?

目前,我正在努力解决如何animation自定义button,我有一个图像和坐标,但我发现你可以通过使用CGPath类或UIBezierPath创build一个button/对象类。 有人可以告诉我两者之间的区别是什么?

使用ARC对CGMutablePathRef进行编码和解码

在ARC下,是否可以使用NSCoding对CGMutablePathRef (或其不可变forms)进行编码/解码? 天真地我尝试: path = CGPathCreateMutable(); … [aCoder encodeObject:path] 但是我从编译器中得到一个友好的错误: Automatic Reference Counting Issue: Implicit conversion of an Objective-C pointer to 'CGMutablePathRef' (aka 'struct CGPath *') is disallowed with ARC 我能做些什么来编码?

为什么CGPath和UIBezierPath在SpriteKit中定义“顺时针”?

在SpriteKit中, clockwise方向对于UIBezierPath是颠倒的,而对于CGPath不是。 例如,如果我有 do { let path = CGPathCreateMutable() CGPathAddArc(path, nil, 0, 0, 10, 0, CGFloat(M_PI_2), true) let node = SKShapeNode(path: path) node.position = CGPoint(x: self.size.width/2, y: self.size.height/2) self.addChild(node) } do { let path = UIBezierPath() path.addArcWithCenter(CGPoint(x: 0, y: 0), radius: 10, startAngle: 0, endAngle: CGFloat(M_PI_2), clockwise: true) let node = SKShapeNode(path: path.CGPath) node.position = […]

无法在UICollectionViewCell上设置阴影并具有圆angular。 一次只能做一件事

我有一个UICollectionViewCell子类,我需要圆angular,并添加一个阴影。 细胞看起来像一张方形的卡片,细胞之间有很大的空间。 所以在每个细胞的“下面”,我想添加一些阴影。 我可以成功做到这一点,但我的细胞只有底部的圆angular。 顶部只有正常的angular落。 我需要所有四个angular落的圆angular。 我已经在这里find了UIViews解决scheme,build议添加一个单独的UIView作为subview ,但我宁愿避免出于性能的原因。 我find了一个解决方法,就是使用这个方法,你可以在我的代码中find: [UIBezierPath bezierPathWithRoundedRect: cornerRadius:] 但这对我也不起作用。 有没有可能是因为我试图只在底部添加阴影“底部”/在底部的细胞不工作对我来说? 似乎大多数这些答案都是为开发人员想要在整个单元格上添加阴影的问题提供的。 我想我会愿意添加一个特殊的subview到我的UICollectionViewCell子类,但我想用它作为最后的手段。 我的目标是iOS 7+和使用Xcode 6.1.1. 这里是我在我的UICollectionViewCell子类中使用的代码尝试实现阴影和圆angular: – (void)load:(CustomUserObject *)customObject { self.customObject = customObject; // Round cell corners self.layer.cornerRadius = 12; // Add shadow self.layer.masksToBounds = NO; self.layer.shadowOpacity = 0.75f; self.layer.shadowRadius = 10.0f; self.layer.shouldRasterize = NO; self.layer.shadowPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(self.frame.size.width/2 – (self.frame.size.width […]