在iphone上从静止点到移动点画一条线

时间:2010-10-22 20:50:07

标签: iphone objective-c drawing

如何在一个点(一个UIView的中心)和一个移动点(触摸位置)之间画一条线,当触摸移动时,该线移动第二个点。

2 个答案:

答案 0 :(得分:5)

在自定义视图中:

  • in touchesMoved:withEvent将当前点存储到变量中,并调用[self setNeedsDisplay]以便视图重绘
  • drawRect:中实现线条的绘制,使用核心图形绘制线条

假设您将触摸的点存储到属性self.touchedPoint中,然后绘图可能如下所示:

@property (nonatomic, assign) CGPoint touchedPoint;

- (void)drawRect:(CGRect)rect
{
 CGContextRef context = UIGraphicsGetCurrentContext();       
 CGContextSaveGState(context);

 CGContextTranslateCTM(context, 0.0, rect.size.height);
 CGContextScaleCTM(context, 1.0, -1.0);

 CGContextSetShouldAntialias(context, YES);
 CGContextSetLineWidth(context, 1.0f);
 CGContextSetRGBStrokeColor(context, 0.7, 0.7, 0.7, 1.0);

 CGContextMoveToPoint(context, rect.size.width/2, rect.size.height/2);
 CGContextAddLineToPoint(context, self.touchedPoint.x, self.touchedPoint.y);
 CGContextDrawPath(context, kCGPathStroke); 

 CGContextRestoreGState(context);
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    self.touchedPoint = [[touches anyObject] locationInView:self];
    [self setNeedsDisplay];
}

答案 1 :(得分:0)

我投了Michal的回答。但我也建议查看Touches示例项目。它很容易让它运行 - 如果你还在整理你的项目,这可能会有所帮助。