我正在尝试使用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
),图形回调在单元格rect中绘制5条重新定向的斜线。它看起来不错,但如果你放大一点......
这些线被剪裁到单元格rect,所以它看起来像那样。我有两个问题:
CGPatternCreate
中指定的栏?可能是缺席
变换在第三个参数? 答案 0 :(得分:0)
好吧,解决了:P
在我的绘图回调中,而不是绘制5行,我绘制7,第一个点(0.0f,0.0f)和第七个点(maxX,maxY)。这正确地加入了这条线。