在我的应用程序中,基于用户拖动绘制一个圆圈。用户点击,这是一个圆圈的中心将被绘制,当他们拖动他们的手指,圆圈将增长到那个点。这是可行的,除了由于某些原因,中心向下和向右移动,因为半径的圆增长。为什么会发生这种情况?以下是我所尝试的:
@implementation CircleView{
CGPoint center;
CGPoint endPoint;
CGFloat distance;
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch = [touches anyObject];
center = [touch locationInView:self];
[self setNeedsDisplay];
}
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch = [touches anyObject];
endPoint = [touch locationInView:self];
CGFloat xDist = (endPoint.x - center.x);
CGFloat yDist = (endPoint.y - center.y);
distance = sqrt((xDist * xDist) + (yDist * yDist));
[self setNeedsDisplay];
}
- (void)drawRect:(CGRect)rect{
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 2.0);
CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor);
CGRect rectangle = CGRectMake(center.x,center.y,distance, distance);
CGContextAddEllipseInRect(context, rectangle);
CGContextStrokePath(context);
}应该发生的是,中心点永远不会移动,而圆圈只会增长。有什么想法吗?
发布于 2013-11-24 20:57:37
CGRect rectangle = CGRectMake(center.x,center.y,distance, distance);应:
CGRect rectangle = CGRectMake(center.x - distance, center.y - distance, distance * 2, distance * 2);发布于 2013-11-24 20:55:06
因为在CGRectMake中,您必须指定矩形的起源(和大小),而不是中心。
发布于 2013-11-24 21:11:18
CGRect rectangle = CGRectMake(center.x - distance, center.y - distance, distance * 2, distance * 2);https://stackoverflow.com/questions/20180832
复制相似问题