- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否有任何核心方法或其他框架方法可返回表示路径对象的Fill部分的CGPath或某种类型的集合?
我正在寻找基本上与 CGPathCreateCopyByStrokingPath 相反的东西。
在有关low-level-text-rendering的文章的帮助下,我能够提出一个代表字母表中每个字母的路径。
问题在于路径是字母的轮廓,而我实际上想要的是仅代表字母填充部分而不是笔划的路径。例如,字母“A”仅由3条不同的线组成。
我目前正在尝试通过类来解决此问题,该类的行为就像一个过于复杂的16段显示器。这是一些有兴趣的人的示例代码:
const NSUInteger segmentsPerDimension = 4;
const CGFloat oneOverTheNumberOfSegments = 1.0 / segmentsPerDimension;
@implementation PathSegments
- (instancetype)initWithRect:(CGRect)rect {
self = [super init];
[self setSegmentBounds:rect];
_segments = [[NSMutableArray alloc] init];
...
[self addVerticalSegments];
...
return self;
}
- (void)addVerticalSegments {
for (NSUInteger i = 0; i <= segmentsPerDimension; i++) {
[self createColumnSegmentsForRow:i];
}
}
- (void)createColumnSegmentsForRow:(NSUInteger)row {
for (NSUInteger i = 0; i < segmentsPerDimension; i++) {
CGFloat x = _segmentBounds.size.width * oneOverTheNumberOfSegments * row;
CGFloat yEnd = _segmentBounds.size.height * oneOverTheNumberOfSegments * i;
CGFloat yStart = _segmentBounds.size.height * oneOverTheNumberOfSegments * (i + 1);
[self addLineSegmentWithXStart:x YStart:yStart XEnd:x YEnd:yEnd];
}
}
...
@end
最佳答案
我确定返回路径的填充部分没有任何意义。虽然可以通过填充轮廓来定义绘制圆形,矩形或自定义形状的路径,但是将填充部分复制到另一条路径将是模棱两可的,因为它与开始时的路径完全相同。
分段的路径然后使用GPathAddPath(...)
组合为一个完整的路径,似乎是继续进行下去的方法。使用一系列直线和曲线,您可以滚动自己的字母形状。
基于您已定义了一组点用作路径段的假设的摘要:
_generatedSegmentPath = CGPathCreateMutable();
CGMutablePathRef subPath = CGPathCreateMutable();
...
if (CGPathIsEmpty(subPath)) {
CGPoint start = [[points objectAtIndex:startIndex] CGPointValue];
CGPathMoveToPoint(subPath, nil, start.x, start.y);
}
if (points.count == 2) {
CGPoint point = [[points objectAtIndex:startIndex + indexChange] CGPointValue];
CGPathAddLineToPoint(subPath, nil, point.x, point.y);
}
else {
CGPoint controlPoint = [[points objectAtIndex:startIndex + indexChange] CGPointValue];
CGPoint endPoint = [[points objectAtIndex:startIndex + (2 * indexChange)] CGPointValue];
CGPathAddQuadCurveToPoint(subPath, nil, controlPoint.x, controlPoint.y, endPoint.x, endPoint.y);
}
CGPathAddPath(_generatedSegmentPath, nil, subPath);
关于ios - 与CGPathCreateCopyByStrokingPath相反?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30424612/
正如标题所说,我想知道是否可以在不创建路径副本的情况下创建路径。基本上我需要这样做的原因是因为我需要一个可以使用 CGpathcontainspoint 的路径。 CGPathMoveToPoint
我发现 iOS 5.0 上的 CGPathCreateCopyByStrokingPath 使用起来非常方便,但它在 iOS 5 及更高版本上可用。 有什么简单的方法可以在iOS 4上实现同路径复制吗
Core Graphics有两个功能,CGPathCreateCopyByDashingPath()和CGPathCreateCopyByStrokingPath() ,两者都采用您想要描边的 CGP
我是一名优秀的程序员,十分优秀!