首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >中心移动drawRect?

中心移动drawRect?
EN

Stack Overflow用户
提问于 2013-11-24 20:52:02
回答 3查看 542关注 0票数 0

在我的应用程序中,基于用户拖动绘制一个圆圈。用户点击,这是一个圆圈的中心将被绘制,当他们拖动他们的手指,圆圈将增长到那个点。这是可行的,除了由于某些原因,中心向下和向右移动,因为半径的圆增长。为什么会发生这种情况?以下是我所尝试的:

代码语言:javascript
复制
@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);
}

应该发生的是,中心点永远不会移动,而圆圈只会增长。有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-11-24 20:57:37

代码语言:javascript
复制
CGRect rectangle = CGRectMake(center.x,center.y,distance, distance);

应:

代码语言:javascript
复制
CGRect rectangle = CGRectMake(center.x - distance, center.y - distance, distance * 2, distance * 2);
票数 1
EN

Stack Overflow用户

发布于 2013-11-24 20:55:06

因为在CGRectMake中,您必须指定矩形的起源(和大小),而不是中心。

票数 1
EN

Stack Overflow用户

发布于 2013-11-24 21:11:18

代码语言:javascript
复制
CGRect rectangle = CGRectMake(center.x - distance, center.y - distance, distance * 2, distance * 2);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20180832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档