【问题标题】:How can I color a pattern?如何为图案着色?
【发布时间】:2014-12-19 19:00:21
【问题描述】:

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

    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);
}

【问题讨论】:

  • 颜色在回调中。显示回调。你了解“屏蔽”模式吗?

标签: ios objective-c core-graphics cgcontext


【解决方案1】:

颜色全部在回调中(您的问题中没有显示)。这是绘图文档:

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。然后,您可以设置笔触图案或填充图案,并传递一个颜色数组。

【讨论】:

  • 更改为 false 但仍然遇到同样的问题。我需要更改其他内容吗?
  • 我怎么知道?我不知道你在做什么,是吗?你没有按照我的要求显示回调,是吗?看 - 示例代码就在文档中。有用。首先复制它。
  • 已更新回调。
  • 那么到底发生了什么?我没有看到任何绘图发生。你的绘图代码是什么,你实际上得到了什么?无论如何,我重复一遍:首先将 Apple 的代码复制并粘贴到您的应用程序中。有用。现在开始一点一点地改变它。如果它停止工作,请倒退。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-16
  • 2019-09-28
  • 1970-01-01
  • 2018-01-05
相关资源
最近更新 更多