如何为图案着色?

时间:2014-12-19 19:00:21

标签: ios objective-c core-graphics cgcontext

我使用以下代码绘制图案,使笔画看起来像粉笔灰尘。但是,如果我使用模式,我无法找到改变笔画颜色的方法。有没有办法做到这一点?

    CGAffineTransform patternTransform = CGAffineTransformIdentity;
    const CGPatternCallbacks kPatternCallbacks = {0, DrawPatternCellCallback, NULL};
    const CGRect patternBounds = CGRectMake(0, 0, 8, 8);
    CGPatternRef strokePattern = CGPatternCreate(
                                                 NULL,
                                                 patternBounds,
                                                 patternTransform,
                                                 8, // horizontal spacing
                                                 8,// vertical spacing
                                                 kCGPatternTilingNoDistortion,
                                                 true,
                                                 &kPatternCallbacks);
    CGFloat color1[] = {1.0, 0, 1.0, 1};
    CGColorSpaceRef patternSpace = CGColorSpaceCreatePattern(NULL);
    CGContextSetStrokeColorSpace(cacheContext, patternSpace);
    CGContextSetStrokePattern(cacheContext, strokePattern, color1);

   // CGColorSpaceRef patternSpace = CGColorSpaceCreatePattern(NULL);
   // CGContextSetStrokeColorSpace(cacheContext, patternSpace);
    CGContextSetLineCap(cacheContext, kCGLineCapRound);
       CGContextSetLineWidth(cacheContext, 4);


  //Callback


void DrawPatternCellCallback(void *info, CGContextRef cgContext)
{
    UIImage *patternImage = [UIImage imageNamed:@"chalk_brush.png"];
    CGContextDrawImage(cgContext, CGRectMake(0, 0, 8, 8), patternImage.CGImage);
}

1 个答案:

答案 0 :(得分:0)

颜色全部在回调中(您未在问题中显示)。这是模式绘图文档:

https://developer.apple.com/library/ios/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_patterns/dq_patterns.html#//apple_ref/doc/uid/TP30001066-CH206-BBCJAJEC

因此,正如您所看到的,您可以使用具有不同颜色的不同回调的彩色图案,或者使用模板("蒙版")模式。对于后者,在CGPatternCreate来电中,您会说false您现在所说的true。然后,您可以设置笔触图案或填充图案,并传递颜色数组。