Iphone 使用CGContext绘制直线

Iphone 使用CGContext绘制直线,iphone,objective-c,ios,ipad,cgcontext,Iphone,Objective C,Ios,Ipad,Cgcontext,我想用CGContext画一条线,到目前为止,我得到的是: CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetStrokeColorWithColor(context, [UIColor blackColor].CGColor); CGContextSetLineWidth(context, 1.0f); CGContextMoveToPoint(context, 10, 10); CGContextAddLin

我想用CGContext画一条线,到目前为止,我得到的是:

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetStrokeColorWithColor(context, [UIColor blackColor].CGColor);
CGContextSetLineWidth(context, 1.0f);
CGContextMoveToPoint(context, 10, 10); 
CGContextAddLineToPoint(context, 100, 50);
CGContextStrokePath(context);

它总是从左上角到右下角绘制。如何调整此线的起点和终点原点?如何调整线的长度?

这两条线负责起点和终点:

CGContextMoveToPoint(context, 10, 10);    // This sets up the start point
CGContextAddLineToPoint(context, 100, 50); // This moves to the end point.
通过调整这两个x、y点,可以调整直线。直线的长度取决于起点和终点

下面是psoft的答案——这是画图的基础,包括创建路径和抚摸路径


《石英2D指南》中的更多示例代码对这一点进行了更详细的解释。

CoreGraphics==好时光

我已经有一段时间没有徒手做任何事情了,这些天我所做的就是在绘图操作之前构建一切。请记住,从年月日起,存在一个隐式的“光标”,您可以移动它,而无需将移动作为图形操作,但必须指定它。我认为一个很好的方法(至少对于静态图形)是先创建那些必须绘制的路径,然后反复使用路径进行填充、笔划、着色等操作

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

等。如果需要,您可以在末尾释放路径,或保留参考以供以后使用。

感谢您发布一些工作代码。每次我需要CGPathAddArcToPoint时,我都必须通过尝试一个错误来解决问题,这并没有导致理解。苹果的文档称这些值为端点,但在图3.5中谈到了切点。通过在纸上画出你的第一个参数,(10,10)在做什么,我现在看到基本上是角点,或者用二次贝塞尔曲线来说,它是控制点。将这种理解转化为我正在处理的形状,将它从一个倾斜的矩形变成了一个漂亮的圆形矩形;最后?