cocoa - CGLayer और CALayer का अंतर और संगतता क्या है?



core-graphics (1)

मैं CGLayer और CALayer भ्रमित कर रहा हूँ। वे समान दिखते हैं, तो अलग-अलग कार्यान्वयन क्यों हैं? CGLayer और CALayer बीच क्या अंतर है, और संगतता क्या है?


वे पूरी तरह से अलग हैं, और संगत नहीं हैं।

बिल्कुल स्पष्ट होना:

यह सख्ती से एक संयोग है कि शब्द "परत" दोनों नामों में प्रयोग किया जाता है; वे पूरी तरह से असंबंधित हैं

CGLayers एक "विशेष" "उच्च प्रदर्शन" चीज हैं।

आप उन्हें "बिटमैप्स की तरह, लेकिन बेहतर" पर विचार कर सकते हैं।

ऐप्पल बैठ गया और कहा, "हम बिटमैप्स का उपयोग कर लोगों के बीमार हैं, चलिए कुछ बेहतर बनाते हैं!" :-)

वास्तव में, आप केवल CGLayers ऑफस्क्रीन के साथ काम करते हैं।

दोहराने के लिए, CGLayers पूरी तरह से ऑफस्क्रीन का उपयोग किया जाता है।

एक बार जब वे तैयार हो जाएं, तो आप उन्हें अपनी वास्तविक स्क्रीन पर विस्फोट कर सकते हैं (जो कहने के लिए: उन्हें अपने विचारों में से एक पर विस्फोट करें)।

( हालांकि : ध्यान दें कि: CGLayers अक्सर "अकेले" उपयोग किए जाते हैं। जब मैं कहता हूं कि उनका उपयोग "अकेला" होता है, तो मेरा मतलब है कि उनका उपयोग छवि प्रसंस्करण या गणितीय गणनाओं के लिए किया जाता है। उस स्थिति में, CGLayers को कभी भी स्क्रीन पर नहीं देखा जाता है, और उनके पास ऑनस्क्रीन दुनिया से पूरी तरह से कोई कनेक्शन नहीं है।)

इसके विपरीत ... कैलियर बस चीजों में "विचार" हैं। कैलियर बस विचार कैसे काम करते हैं।

तो दो अवधारणाएं पूरी तरह से अलग हैं।

कैलियर सिर्फ "इन" विचारों में हैं। इसके विपरीत CGLayers ऐप्पल का ठंडा "ऑफस्क्रीन, उच्च प्रदर्शन, गणना मशीनरी" हैं।

स्पष्ट होने के लिए, CGLayers के पास विचारों से कोई संबंध नहीं है, और विचारों के साथ कोई संबंध नहीं है। (निश्चित रूप से, आप एक CGLayer को एक दृश्य में पेस्ट कर सकते हैं, लेकिन फिर, आप एक दृश्य में "टाइपोग्राफी" या "एक छवि" कह सकते हैं। टाइपोग्राफी और छवियां दृश्य नहीं हैं, और CGLayers विचार नहीं हैं।)

सामान्य उदाहरण यह है:

आप एक बार जटिल कुछ आकर्षित करना चाहते हैं, और फिर उस चीज़ को स्क्रीन पर कई बार आकर्षित करें। उस समस्या का जवाब बिल्कुल CGLayers है। आपका "कार्य क्षेत्र" एक CGLayer होगा; फिर आप इसे प्रिंटर पर, स्क्रीन पर, या जो कुछ भी कर सकते हैं।

स्पष्ट होने के लिए, मेरी राय में ऐप्पल को एक अलग नाम चुना जाना चाहिए था ...

एक अच्छा नाम "CGCalculationSpace" होगा।

तथ्य यह है कि नाम में "परत" शब्द शामिल है, जिससे आप NSLayers के बारे में सोचते हैं।

दोहराने के लिए: किसी भी तरह से, बिल्कुल कोई संबंध नहीं है। CGLayers परतों से भी अस्पष्ट रूप से संबंधित नहीं हैं।

बिल्कुल कोई कनेक्शन नहीं है। यह वास्तव में भ्रमित है कि नाम "परत" नाम का उपयोग नाम में किया जाता है - यह शर्म की बात है !!

CGLayers शायद "वर्कस्पेस" या "गणना प्रतिमान" या ऐसा कुछ कहा जाना चाहिए।

उम्मीद है कि यह मदद करता है और उम्मीद है कि आप अभी भी पढ़ रहे हैं!





cglayer