1
CGPattern으로 rect를 채우고 스트라이프가있는 일반적인 막대를 그림으로 그려야합니다. 나는 이것을 얻는다.CGPattern을 바둑판 식으로 배열 할 때 올바른 그림
패턴 (전체가 아닌 바)의 코드 패턴 셀은 바 (kTAGBarHeight
보면)의 높이가 동일한면을 가지고이
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);
및 도면 콜백 (callback)은 셀 rect 내부에 5 개의 규칙적인 사선을 그립니다. 그것은 좋아 보인다하지만 ... 조금 확대하면 그것은 그 모양 때문에
의 선
은 셀 RECT 클리핑되고있다. 나는 두 가지 질문이있다 : 패턴이 내가CGPatternCreate
에서 지정한대로 표시 줄의 RECT의 원점 (0,0)에서 인출되지 않는 이유는
- ? 세 번째 매개 변수에서 변환의 부재가 일 수 있습니까?
- 어떻게 그 성가신 효과를 피할 수 있습니까? 해결