2012-10-22 22 views
5

के साथ एक धराशायी रेखा खींचना मैं CGContextSetLineDash के साथ एक धराशायी रेखा खींचने की कोशिश कर रहा हूं।CGContextSetLineDash

यहाँ मेरी कोड है:

float dashPhase = 0.0; 
float dashLengths[] = {30, 30}; 
CGContextSetLineDash(context, dashPhase, dashLengths, 20.0); 
self.previousPoint2 = self.previousPoint1; 
self.previousPoint1 = previous; 
self.currentPoint = current; 

self.mid1 = [self pointBetween:self.previousPoint1 andPoint:self.previousPoint2]; 
self.mid2 = [self pointBetween:self.currentPoint andPoint:self.previousPoint1]; 

UIBezierPath* newPath = [UIBezierPath bezierPath]; 

[newPath moveToPoint:self.mid1]; 
[newPath addLineToPoint:self.mid2]; 
[newPath setLineWidth:self.brushSize]; 

हालांकि, अगर मैं धीरे धीरे आकर्षित, वे धराशायी (नीचे छवि के शीर्ष देखें) लाइनों प्रकट नहीं होते हैं लेकिन अगर मैं जल्दी से आकर्षित, वे दिखाई देते हैं (नीचे छवि के नीचे देख)।

enter image description here

हो रहा क्यों है?

+1

मुझे नहीं पता कि यह एक्सकोड से कैसे संबंधित है। –

उत्तर

4

आपने dashPhase = 0. सेट किया है, इसलिए प्रत्येक बार जब आप एक नई लाइन शुरू करते हैं, तो पैटर्न 30 यूनिट पेंट सेगमेंट के साथ शुरू होता है, इसके बाद 30 यूनिट अनपेक्षित सेगमेंट होता है। यदि लाइन सेगमेंट कम हैं, तो पूरी लाइन पेंट की जाएगी।

तो या तो आप एक ही पथ का उपयोग करते हैं, जहां आप केवल लाइन सेगमेंट जोड़ते हैं, या आप पैटर्न को शुरू करने के लिए dashPhase प्रत्येक नए उपपथ के लिए गणना करते हैं।

(? CGContextSetLineDash के अंतिम पैरामीटर dashLengths[] की लंबाई, 2 हो नहीं करना चाहिए अर्थात्)

अद्यतन: हम चर्चा में पता लगा है, समस्या का समाधान पंक्ति जोड़ने के लिए वास्तव में था जब तक उपयोगकर्ता वही वक्र खींचता है तब तक अंतिम बीज़ियर पथ से खंड:

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { 
    // ... 
    // Compute nextPoint to draw ... 
    UIBezierPath *lastPath = [self.paths lastObject]; 
    [lastPath addLineToPoint:self.nextPoint]; 
    // ... 
} 
+1

मैंने आपकी टिप्पणियों के आधार पर कुछ बिट्स बदल दिए, लेकिन फिर भी, जब मैं धीरे-धीरे धराशायी रेखाओं को खींचता हूं तो बस सभी एक साथ विलय करते हैं –

+0

@ d3v3l0p3r101: इसका अर्थ क्या है "धीरे-धीरे ड्राइंग"? क्या आप अद्यतन कोड दिखा सकते हैं? –

+0

अधिकतर "धीरे-धीरे ड्राइंग" का अर्थ है कि आपके द्वारा वर्णित मुद्दे के कारण अंक एक-दूसरे के नज़दीक नज़दीक होते हैं। मुझे लगता है कि उचित दृष्टिकोण पथ के खंडों को जोड़ना होगा, यदि आवश्यक हो तो पिछले हिस्सों को फिर से खींचना सुनिश्चित करें कि डैश ठीक से खींचे गए हैं। –

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

  • कोई संबंधित समस्या नहीं^_^