2010-02-12 16 views
12

मैं प्रलेखन के माध्यम से पढ़ रहा हूं हालांकि यह मुझे तुरंत स्पष्ट नहीं है कि CGPath का उपयोग करके बहुभुज को कैसे आकर्षित किया जाए।CGPath के साथ बहुभुज कैसे आकर्षित करें?

__ 
\ \ 
\ \ 
    \__\ 

किसी को भी ऐसा करने के तरीके पर एक टुकड़ा प्रदान करते हैं कृपया सकते हैं: सभी मैं क्या करने की जरूरत कुछ इस तरह चारों ओर CGPath आकर्षित करने के लिए है?

साथ ही मुझे लगता है CGPathContainsPoint में मदद मिलेगी मुझे यह निर्धारित करता है, तो एक बिंदु इस तरह के पथ के अंदर है ?, या पथ एक ठोस ड्राइंग

भी होना जरूरी है मैं कैसे cgpath चारों ओर ले जाने कर सकते हैं? क्या यह उत्पत्ति की तरह कुछ बदलना आसान है जैसे कि सीजीएफ़ में?

धन्यवाद।

-Oscar

उत्तर

13

आप इस तरह यह करना चाहिए:

- (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); 
} 

नोट यहाँ, अंक आप के लिए बहुभुज बनाने के लिए चाहते अंकों की सरणी है। तो यह परिपत्र पथ होना चाहिए जैसे: आप अंक (x1, x2, x3) के त्रिकोण को चित्रित कर रहे हैं तो आपको सरणी (x1, x2, x3, x1) में पास करना चाहिए।

उम्मीद है कि इससे मदद मिलती है।

+0

आप एक सरणी यहाँ सदर्भ नहीं देते, तो आप सिर्फ बार-बार एक ही बिंदु जोड़ है। –

+1

@ डेविड मैंने सोचा कि यह समझा गया था –

+0

आपकी मदद के लिए धन्यवाद। –

2

आईफोन पर स्टैनफोर्ड की सीएस 1 9 3 पी कक्षा में हैलोपॉली नामक एक प्रोजेक्ट था जो कि आप चाहते हैं कि वास्तव में हो सकता है - class home page spec के लिए देखें और उसके बाद वीडियो को कार्यान्वित किया गया था (और असाइनमेंट करने वाले लोगों से Google समाधान) देखें।

5

ऐप्पल के QuartzDemo एप्लिकेशन देखें। इसमें ऐसा करने के लिए कोड है, साथ ही साथ कई अन्य क्वार्ट्ज ड्राइंग फ़ंक्शंस भी हैं।

16

यह CGPath का उपयोग करके त्रिकोण बनाने का एक उदाहरण है, आपको केवल अंक रखना होगा।

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 

इस परिणाम

Triangle with CGPath

+3

वास्तव में पूछताछ की तरह CGPath का उपयोग करने के लिए +1 चाहता था। – Tim

संबंधित मुद्दे