我想使用CGContext绘制一条线,到目前为止我是:
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetStrokeColorWithColor(context, [UIColor blackColor].CGColor);
CGContextSetLineWidth(context, 1.0f);
CGContextMoveToPoint(context, 10, 10);
CGContextAddLineToPoint(context, 100, 50);
CGContextStrokePath(context);
它总是从左上角到右下角的顶部。如何调整此线的起点和终点?如何调整线的长度?
答案 0 :(得分:8)
CoreGraphics == Good Times。
我已经做了一段时间,因为我做了一些徒手画,我现在所做的就是在绘画操作之前建立一切。请记住,从Logo开始,有一个隐含的光标,你可以移动它而不需要移动绘图操作,但你必须指定它。我认为一个好的方法(至少对于静态数字)是创建那些你必须首先绘制的路径,然后反复使用路径来填充,描边,着色等。
CGColorRef fillColor = // yadda
CGColorRef strokeColor = // yadda
const CGFloat radius = 5.0;
// Create the path first - rounded rectangle
CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path, NULL, 100.0 - radius, 10.0);
CGPathAddLineToPoint(path, NULL, 10.0 + radius, 10.0);
CGPathAddArcToPoint(path, NULL, 10.0, 10.0, 10.0, 10.0 + radius, radius);
CGPathAddLineToPoint(path, NULL, 10.0, 100.0 - radius);
CGPathAddArcToPoint(path, NULL, 10.0, 100.0, 10.0 + radius, 100.0, radius);
CGPathAddLineToPoint(path, NULL, 100.0 - radius, 100.0);
CGPathAddArcToPoint(path, NULL, 100.0, 100.0, 100.0, 100.0 - radius, radius);
CGPathAddLineToPoint(path, NULL, 100.0, 10.0 + radius);
CGPathAddArcToPoint(path, NULL, 100.0, 10.0, 100.0 - radius, 10.0, radius);
CGPathCloseSubpath(path);
// Then use it in your draw commands
CGContextSetStrokeColor(context, CGColorGetComponents(strokeColor));
CGContextSetFillColor(context, CGColorGetComponents(fillColor));
CGContextSetLineJoin(context, kCGLineJoinMiter);
CGContextSetLineWidth(context, strokeWidth);
CGContextAddPath(context, path);
CGContextDrawPath(context, kCGPathFillStroke);
CGPathRelease(path);
等。如果需要,可以在最后释放路径,或者保留参考以供以后使用。
答案 1 :(得分:5)
这两行负责起点和终点:
CGContextMoveToPoint(context, 10, 10); // This sets up the start point
CGContextAddLineToPoint(context, 100, 50); // This moves to the end point.
通过调整这两个x,y点,您可以调整线条。线的长度取决于起点和终点。
继psoft的答案之后 - 这是一个基本的example project绘图,包括创建一个路径并抚摸它。
有关paths的Quartz 2D指南中的更多示例代码,将对此进行更详细的说明。