我正在尝试用 CGPattern 填充矩形,用条纹绘制典型的条形图。我得到这个。
模式的代码(不是整个条)是这样的
CGContextSaveGState (context);
CGColorSpaceRef patternSpace = CGColorSpaceCreatePattern(NULL);
CGContextSetFillColorSpace(context, patternSpace);
CGColorSpaceRelease(patternSpace);
CGFloat alpha = 0.25f;
static const CGPatternCallbacks callbacks = {0, &DrawStripesPattern, NULL};
NSNumber *cellSide = [NSNumber numberWithFloat:kTAGBarHeight];
CGFloat cellSideFloat = [cellSide floatValue];
CGPatternRef pattern = CGPatternCreate((__bridge void *)(cellSide),
CGRectMake(0.0f, 0.0f, cellSideFloat, cellSideFloat),
CGAffineTransformIdentity,
cellSideFloat,
cellSideFloat,
kCGPatternTilingConstantSpacing,
true,
&callbacks);
CGContextAddPath(context, [path CGPath]);
CGContextClip(context);
CGContextSetFillPattern(context, pattern, &alpha);
CGContextFillRect(context, barRect);
CGPatternRelease(pattern);
CGContextRestoreGState (context);
模式单元格具有与条形高度相同的一侧(看kTAGBarHeight
),并且绘图回调是在单元格矩形内绘制 5 条规则斜线。它看起来不错,但如果你放大一点......
线条被剪裁到单元格矩形,所以看起来像这样。我有两个问题:
- 为什么模式没有按照我在中指定的条形矩形的原点 (0,0) 绘制
CGPatternCreate
?会不会是第三个参数没有变换? - 我怎样才能避免这种恼人的影响?