2012-05-02 17 views
8

drawRect ओवरराइड करते समय मुझे पता चला है कि समन्वय वहां ऊपरी बाईं ओर 0,0 का उपयोग करते हैं।कोर ग्राफिक्स समन्वय प्रणाली

कुछ आईओएस प्रौद्योगिकियों को परिभाषित डिफ़ॉल्ट समन्वय प्रणाली जिसका मूल बिंदु और अभिविन्यास UIKit द्वारा इस्तेमाल किया उन लोगों से अलग:

लेकिन एप्पल UIView प्रोग्रामिंग गाइड इस कहते हैं। उदाहरण के लिए, कोर ग्राफिक्स और ओपनजीएल ईएस एक समन्वय प्रणाली का उपयोग करते हैं जिसका मूल दृश्य या खिड़की के निचले बाएं कोने में स्थित है और जिसका वाई-अक्ष स्क्रीन के सापेक्ष ऊपर की तरफ इंगित करता है।

मैं उलझन में हूं; क्या वे कोर ग्राफिक्स से अलग कुछ के बारे में बात कर रहे हैं जब वे कोर ग्राफिक्स का संदर्भ देते हैं?

उत्तर

7

इस दस्तावेज़ में "कोर ग्राफिक्स" का अर्थ है "क्वार्ट्ज", हां। यह सिर्फ एक oversimplification है।

जब आप CGContext स्वयं बनाते हैं, तो इसकी समन्वय प्रणाली में मूल-बाईं ओर उत्पत्ति होती है। जब UIKit दृश्य में ड्राइंग के लिए CGContext बनाता है, तो यह -drawRect: पर कॉल करने से पहले समन्वय प्रणाली को मददगार रूप से फ़्लिप करता है।

2

आईओएस पर कोर ग्राफिक्स और क्वार्ट्ज, जहां तक ​​निर्देशांक जाते हैं, वही बात है। iOS Technologies Guide तो कहते हैं:

कोर ग्राफिक्स (भी क्वार्ट्ज के रूप में जाना जाता है) ...

कोर ग्राफिक्स फ्रेमवर्क (CoreGraphics.framework) क्वार्ट्ज 2 डी ड्राइंग एपीआई के लिए इंटरफेस में शामिल है। क्वार्ट्ज ही उन्नत, वेक्टर आधारित ड्राइंग इंजन है कि मैक ओएस एक्स में प्रयोग किया जाता है

अंतर यह है कि, तकनीकी रूप से, क्वार्ट्ज प्रौद्योगिकी या तंत्र, और "कोर ग्राफिक्स" है का नाम है ढांचा। (मैक ओएस पर, ज़ाहिर है, वहाँ वास्तव में एक "क्वार्ट्ज" ढांचा, जो सिर्फ एक छाता है।)

2

इस सूत्र खोजने अन्य लोगों के लाभ के लिए:

यहाँ समन्वय प्रणाली की पूरी जानकारी के नहीं है : Coordinate Systems in Cocoa

यह बिल्कुल उपयोगी नहीं है कि वे भिन्न हैं। आपके ऐप में विभिन्न स्तरों पर समन्वय प्रणालियों के बीच कनवर्ट करने के तरीके हैं! उदाहरण के लिए यह इस बिंदु के निर्देशांक पाता है कि यह ज़ूम की गई छवि पर दृश्यमान स्क्रीन में (20,20) पर है। परिणाम ज़ूम की गई छवि की उत्पत्ति के सापेक्ष है जो अब अंतरिक्ष में बंद हो सकता है।

croppingFrame.origin = [self convertPoint:CGPointMake(20.0, 20.0) fromCoordinateSpace:(self.window.screen.fixedCoordinateSpace)]; 
संबंधित मुद्दे