2010-02-12 42 views
12

Tôi đã đọc thông qua tài liệu tuy nhiên nó không phải là ngay lập tức rõ ràng với tôi làm thế nào để vẽ một đa giác bằng cách sử dụng CGPath. Tất cả những gì tôi cần làm là vẽ CGPath xung quanh một cái gì đó như thế này:Làm thế nào để vẽ đa giác với CGPath?

__ 
\ \ 
\ \ 
    \__\ 

Có ai vui lòng cung cấp đoạn mã về cách thực hiện điều này không?

Bên cạnh đó tôi giả CGPathContainsPoint sẽ giúp tôi xác định nếu một điểm nằm bên con đường như vậy ?, hay không con đường phải là một bản vẽ rắn

Ngoài ra làm thế nào tôi có thể di chuyển xung quanh cgpath? Đây có phải là dễ dàng như thay đổi một cái gì đó giống như nguồn gốc giống như trong cgrect?

Cảm ơn bạn.

-Oscar

Trả lời

13

Bạn nên làm điều đó như thế này:

- (void)drawRect:(CGRect)rect { 

     CGContextRef context = UIGraphicsGetCurrentContext(); 

     CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor); 
     CGContextSetRGBFillColor(context, 0.0, 0.0, 1.0, 1.0); 

     // Draw them with a 2.0 stroke width so they are a bit more visible. 
     CGContextSetLineWidth(context, 2.0); 

     for(int idx = 0; idx < self.points.count; idx++) 
     { 

      point = [self.points objectAtIndex:idx];//Edited 
      if(idx == 0) 
      { 
       // move to the first point 
       CGContextMoveToPoint(context, point.x, point.y); 
      } 
      else 
      { 
       CGContextAddLineToPoint(context, point.x, point.y); 
      } 
     } 

     CGContextStrokePath(context); 
} 

Lưu ý ở đây, những điểm là mảng các điểm bạn muốn vẽ đa giác cho. Vì vậy, nó phải là đường tròn như: Bạn đang vẽ một hình tam giác của các điểm (x1, x2, x3) thì bạn nên chuyển vào mảng (x1, x2, x3, x1).

Hy vọng điều này sẽ hữu ích.

+0

Bạn không tham khảo một mảng ở đây, bạn chỉ cần thêm điểm giống nhau lặp đi lặp lại. –

+1

@ David Tôi nghĩ rằng điều này đã được hiểu –

+0

Cảm ơn sự giúp đỡ của bạn. –

2

Lớp CS193P của Stanford trên iPhone có dự án gọi là HelloPoly có thể chính xác như bạn muốn - xem class home page cho thông số và sau đó xem video về cách triển khai (và giải pháp của google từ những người đã thực hiện bài tập).

5

Xem ứng dụng của Apple QuartzDemo. Nó có mã để làm điều này, cũng như nhiều chức năng vẽ khác của Quartz.

16

Đây là ví dụ về cách tạo tam giác bằng CGPath, bạn chỉ phải đặt điểm.

var path = CGPathCreateMutable() 
CGPathMoveToPoint(path, nil, 0, 0) //start from here 
CGPathAddLineToPoint(path, nil, 20, 44) 
CGPathAddLineToPoint(path, nil, 40, 0) 
CGPathAddLineToPoint(path, nil, 0, 0) 

//and to use in SpriteKit, for example 

var tri = SKShapeNode(path: path) 
var color = NSColor.blueColor() 
tri.strokeColor = color 
tri.fillColor = color 

Đây là kết quả

Triangle with CGPath

+3

+1 để thực sự sử dụng CGPath như người hỏi muốn. – Tim

Các vấn đề liên quan