2011-01-23 13 views
16

क्या है जब मैं रेखाएं और आकार आदि खींचता हूं तो मुझे आईओएस में "वर्तमान ग्राफिक्स संदर्भ" मिलता है।आईओएस "वर्तमान ग्राफिक्स संदर्भ" -

"वर्तमान ग्राफिक्स संदर्भ" वास्तव में क्या है - मैं 30,000 फुट विवरण की तलाश में हूं।

अभी मैं सिर्फ यूआई कोड कॉपी और पेस्ट करता हूं, बिल्कुल यह सुनिश्चित नहीं करता कि यह क्या कर रहा है।

+1

मुझे सच में यकीन नहीं है कि "30,000 फुट विवरण" क्या है। क्या आपका मतलब बहुत व्यापक और विस्तृत स्पष्टीकरण है? यहां [ग्राफिक्स संदर्भ पर ऐप्पल का दस्तावेज] है (http://developer.apple.com/library/mac/#documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_overview/dq_overview.html#//apple_ref/doc/uid/TP30001066-CH202 -TPXREF131)। –

+5

ए "30,000 फुट व्यू" को "बड़ी तस्वीर" के रूप में भी जाना जाता है। पृथ्वी से 30,000 फीट जमीन पर कई विवरण नग्न आंखों के लिए अस्पष्ट हैं। "30000 फुट व्यू वाक्यांश" के लिए शीर्ष Google परिणाम में चौथी प्रविष्टि भी देखें: http://askthemanager.com/2008/11/the-25-most-annoying-business-phrases/ –

+0

स्पष्ट स्पष्टीकरण के लिए व्यापक दृश्य, इसे आज़माएं ... http://stackoverflow.com/questions/4775594/what-is-a-graphic-context-ios/4776606#4776606 – Fattie

उत्तर

15

ओएस को जानकारी को सहेजने के लिए एक जगह की आवश्यकता है, जैसे राज्य ड्राइंग, जिसे आप प्रत्येक एकल सीजी ड्राइंग में निर्दिष्ट नहीं करना चाहते हैं कमांड, जैसे कि बिटमैप या ड्रॉ करने के लिए व्यू, स्केल या अन्य ट्रांसफॉर्म का उपयोग करने के लिए, आपके द्वारा निर्दिष्ट अंतिम रंग इत्यादि।

संदर्भ प्रत्येक सीजी कॉल को बताता है कि आपके वर्तमान ड्राइंग के लिए यह "सामान" कहां मिलना है कहते हैं। सटीक उसी ड्राइंग कॉल पर एक अलग संदर्भ दें, और वह कॉल एक अलग रंग, अलग-अलग पैमाने, आदि के साथ एक पूरी तरह से अलग दृश्य में एक अलग बिटमैप को आकर्षित कर सकता है।

1

असल में यह एक मंच (आईओएस, एंड्रॉइड, जावाएमई और कई अन्य) में एक वर्ग है जो उस प्लेटफॉर्म के लिए प्रदान की गई सभी ड्राइंग/डिस्प्ले क्षमताओं तक पहुंच प्रदान करता है। यह पाठ्यक्रम के विभिन्न प्लेटफार्मों के लिए थोड़ा भिन्न होता है, लेकिन यह 30,000 फुट विवरण है :)

+0

आईओएस पर, वर्तमान ग्राफिक्स संदर्भ प्राप्त करने से संबंधित कार्य हैं केवल UIKit संदर्भ फ़ंक्शन, "कक्षाएं" नहीं। ;) –

+0

मैं एक "संदर्भ" को "वर्ग" के मुकाबले "राज्य" के रूप में भी संदर्भित करता हूं। हालांकि, कक्षा इसे कार्यान्वित करने का एक तरीका हो सकती है। –

16

एक ग्राफिक्स संदर्भ वह स्थान है जहां जानकारी के बारे में जानकारी है ड्राइंग राज्य संग्रहित है। इसमें भरने का रंग, स्ट्रोक रंग, रेखा चौड़ाई, रेखा पैटर्न, घुमावदार नियम, मुखौटा, वर्तमान पथ, पारदर्शिता परतें, परिवर्तन, पाठ परिवर्तन इत्यादि शामिल हैं। कोरग्राफिक्स कॉल का उपयोग करते समय, आप संदर्भ को प्रत्येक एकल कार्य में उपयोग करने के लिए निर्दिष्ट करते हैं। इसका मतलब है कि आप एक साथ कई संदर्भों का उपयोग कर सकते हैं, हालांकि आम तौर पर आप केवल एक का उपयोग करते हैं। UIKit परत पर, "वर्तमान" ग्राफिक्स संदर्भ की अवधारणा है, जो एक ग्राफिक्स संदर्भ है जिसका उपयोग सभी यूआईकिट-स्तरीय ड्राइंग कॉल (जैसे -[UIColor set] या UIBezierPath ड्राइंग) द्वारा किया जाता है। वर्तमान संदर्भ संदर्भों के ढेर में संग्रहीत है, इसलिए आप कुछ ड्राइंग के लिए एक नया संदर्भ बना सकते हैं, फिर जब आप इसे पूरा करते हैं तो पिछले संदर्भ को पुनर्स्थापित किया जाता है। आम तौर पर आपको कैलियर डिस्प्ले से संबंधित तरीकों के अंदर -[UIView drawRect:] के अंदर मुफ्त में एक संदर्भ मिलता है, लेकिन अन्यथा नहीं।

ऐसा लगता था कि "वर्तमान" संदर्भ एक आवेदन-व्यापी वैश्विक स्थिति था, और इसलिए मुख्य धागे के बाहर छूने के लिए सुरक्षित नहीं था। आईओएस 4.0 (मुझे विश्वास है) के रूप में, यह एक धागा-स्थानीय राज्य बन गया और यूआईकिट-स्तरीय ड्राइंग विधियां पृष्ठभूमि धागे पर उपयोग करने के लिए सुरक्षित हो गईं।

+0

क्या मतलब है कि हम drawRect के अंदर मुफ्त में संदर्भ प्राप्त करते हैं? – mskw

+0

@mskw: इसका मतलब है कि '-drawRect: 'के अंदर, ढांचे ने पहले से ही एक ग्राफिक्स संदर्भ स्थापित कर लिया है और इसे" वर्तमान संदर्भ "के रूप में सेट किया है, इसलिए आपके UIKit ड्राइंग आदेश संदर्भों के बारे में चिंता किए बिना काम करेंगे। '-DrawRect: 'के बाहर: यह आमतौर पर सच नहीं है। –

+0

लेकिन आपको अभी भी UIGraphicsBeginImageContextWithOptions फ़ंक्शन को कॉल करने की आवश्यकता है? – mskw

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