簡體   English   中英

在Objective-C(iPad)中的兩個可移動圓之間畫線

[英]Draw line between two moveable circles in objective-c (iPad)

我是Objective-c的新手,正在嘗試在Objective-c的可移動圓之間畫一條線。 我已經有生成圓圈的代碼。 這是我想在我的應用中創建的圖像。

http://images.sciencedaily.com/2004/04/040407083832.jpg

這是我的代碼。

CircleViewController.m

   - (void)viewDidLoad
   {
     [super viewDidLoad];
     for (int i=0; i<5; i++) {

    CGRect circleFrame = CGRectMake(arc4random() % 500, arc4random() % 500, (arc4random() % 200)+50 , (arc4random() % 200)+50);
    CircleView *cirleView = [[CircleView alloc] initWithFrame: circleFrame];
    cirleView.backgroundColor = [UIColor clearColor];

    CGFloat hue = ( arc4random() % 256 / 256.0 );  //  0.0 to 1.0
    CGFloat saturation = ( arc4random() % 128 / 256.0 ) + 0.5;  //  0.5 to 1.0, away from white
    CGFloat brightness = ( arc4random() % 128 / 256.0 ) + 0.5;  //  0.5 to 1.0, away from black
    UIColor *color = [UIColor colorWithHue:hue saturation:saturation brightness:brightness alpha:1];
    cirleView.circleColor = color;
    [self.view addSubview:cirleView];
 }

}

CircleView.m

   -(void) drawCircle:(CGPoint)p withRadius:(CGFloat)radius inContext:(CGContextRef)contex
   {
       UIGraphicsPushContext(contex);
       CGContextBeginPath(contex);
       CGContextAddArc(contex, p.x, p.y, radius, 0, 2*M_PI, YES);
       CGContextSetLineWidth(contex, 2.0);
       CGContextAddLineToPoint(contex, p.x, p.y);
       CGContextDrawPath(contex, kCGPathFillStroke);
       UIGraphicsPopContext(); 
   }

   - (void)drawRect:(CGRect)rect
   {

        CGFloat size = self.bounds.size.width/2;
        if(self.bounds.size.height < self.bounds.size.width) size = self.bounds.size.height / 2;

        size *= 0.90;
        CGContextRef context = UIGraphicsGetCurrentContext();
        CGContextSetLineWidth(context, 5.0);

        [_circleColor setStroke];
        [_circleColor setFill];    
        CGPoint point1;
        point1.x = self.bounds.origin.x + self.bounds.size.width/2;
        point1.y = self.bounds.origin.y + self.bounds.size.height/2;

        [self drawCircle:point1 withRadius:size inContext:context];

        UITapGestureRecognizer *singleFingerTap =
        [[UITapGestureRecognizer alloc] initWithTarget:self
                                        action:@selector(handleSingleTap:)];
        [self addGestureRecognizer:singleFingerTap];
   }

謝謝您的幫助。

畫一條線:

-(void) drawLine (CGRect circleViewRect1, CGRect circleViewRect2)
{
    CGContextRef context   = UIGraphicsGetCurrentContext();
    CGContextSetStrokeColorWithColor(context, [UIColor blackColor].CGColor);

    //line width
    CGContextSetLineWidth(context, 1.0);

    CGContextMoveToPoint(context, circleViewRect1.center.x + circleViewRect1.bounds.width/2,circleViewRect1.center.y + circleViewRect1.bounds.height/2); //start from first circle radius

    CGContextAddLineToPoint(context,  circleViewRect2.center.x + circleViewRect2.bounds.width/2,circleViewRect2.center.y + circleViewRect2.bounds.height/2); //draw to this point

    // and now draw the Path!
    CGContextStrokePath(context);
}

注意:這僅在兩個圓的中心位於水平線上時才有用。 另外,假設circleViewRect1在circleViewRect2的左側。 您必須弄清楚其他用例的值,例如,它們以不同的角度放置等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM