控制CGStroke中图案的方向

时间:2014-02-05 16:20:26

标签: ios cocoa-touch ios7 cgcontext

我正在尝试在我的应用中创建“图案画笔描边”效果。我使用带有图案CGContextStrokePath的{​​{1}}来实现此目的。这给了我以下问题。

当我画一条直线时,它的作用很奇妙,例如:

enter image description here

然而,当我画出对角线笔画时,我明白了:

enter image description here

而我实际上的目标是:

enter image description here

(图案的方向差异是这里的问题,而不是我粗制滥造的图像裁剪!)

到目前为止,我一直在努力寻找一种方法来控制图案平铺/显示的方向,但我还没有设法找到一种方法来做到这一点。任何人都可以启发我,或者告诉我应该怎么做呢?

目前的代码包括以下完整性。

UIColor

1 个答案:

答案 0 :(得分:0)

我建议切换到使用CAShapeLayer,而不是使用CGContext。我在我的一个应用程序中使用了这种方法:

//call this on every drawRect: call.
-(void)makeLineLayer:(CALayer *)layer{
    CAShapeLayer *line = [CAShapeLayer layer];
    UIBezierPath *linePath=[UIBezierPath bezierPath];
    [linePath moveToPoint:self.lineStart];
    [linePath addLineToPoint:self.lineEnd];
    [linePath setLineWidth:60.0];

    line.path=linePath.CGPath;
    line.fillColor = nil;
    line.opacity = 1.0;
    [layer addSublayer:line];
}

这将为您提供两点之间的界限。在此处,我建议您向CALayer添加CAShapeLayer,并将其contents属性设置为您的图片。这是a link to an article describing how to tile an image in a CALayer。然后你需要计算CAShapeLayer的角度并将CALayer旋转那个角度。