这里有很多帖子,有人问如何用CGContext中的画笔绘制线条。答案总是:使用模式。然而,我现在尝试了几个小时,对我来说主要的问题似乎是:看起来CoreGraphics只是将模式绘制为填充,然后简单地使用您指定的路径的笔划剪切此模式。这导致一些看起来很糟糕的瓷砖边框,它看起来并不像有人真正手工绘制的东西。我想要的是刷子是沿着路径画的,没有任何剪裁。我基本上想要沿着路径移动,只需在路径上的每个x点(距离)和画笔的大小上绘制画笔图像。这在CoreGraphics中是否可行,或者这只是你必须自己实现的东西?
//编辑:对不起,我觉得很清楚我试过说的,我用了一个模式。这就是我到目前为止所做的:
struct CGPatternCallbacks patternCallback = {0, drawChalkPattern, NULL};
CGAffineTransform patternTransform = CGAffineTransformMakeScale(.25f, .25f);
UIImage* brush = [UIImage imageNamed:@"ChalkBrush"];
CGPatternRef pattern = CGPatternCreate(NULL, (CGRect){CGPointZero, brush.size}, patternTransform, brush.size.width, brush.size.height, kCGPatternTilingConstantSpacingMinimalDistortion, true, &patternCallback);
CGColorSpaceRef patternSpace = CGColorSpaceCreatePattern(NULL);
CGContextSetStrokeColorSpace(context, patternSpace);
CGFloat color[4] = {1.0f, 1.0f, 1.0f, 1.0f};
CGContextSetStrokePattern(context, pattern, color);
CGContextDrawPath(context, kCGPathStroke);
并且这是patternCallback函数:
void drawChalkPattern(void * info, CGContextRef context) {
UIImage* pattern = [UIImage imageNamed:@"ChalkBrush"];
CGContextDrawImage(context, (CGRect){CGPointZero, pattern.size}, [pattern CGImage]);
}
祝你好运, 迈克尔