这里有很多帖子,有人问如何在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]);
}
最好的问候,迈克尔