2008-11-23 10 views
16

मैं लाइनों और मंडलियों को चित्रित करने के लिए क्वार्ट्ज में एपीआई देखता हूं। लेकिन मैं बस इतना करना चाहता हूं कि (x, y) कार्टेशियन समन्वय को पिक्सेल को एक विशेष मान रंग दें। मैं उसको कैसे करू?कोर ग्राफिक्स का उपयोग करके मैं एक बिंदु कैसे आकर्षित करूं?

उत्तर

4

आप प्रश्न में समन्वय पर 1-पिक्सेल-लंबाई रेखा खींच सकते हैं; जो आप चाहते हैं उसे पूरा करना चाहिए।

13

क्वार्ट्ज एक पिक्सेल-उन्मुख एपीआई नहीं है, और इसके संदर्भ पिक्सेल बफर आवश्यक नहीं हैं। यदि आप पिक्समैप्स खींचना चाहते हैं, तो CGBitmapContextCreate() के साथ बिटमैप संदर्भ बनाएं। आप एक बफर प्रदान करते हैं, जिसे आप सीधे जोड़ सकते हैं, और CGImageCreate() का उपयोग करके उसी बफर से CGImage बनाकर और उसे चित्रित करके किसी अन्य संदर्भ में प्रतिलिपि बना सकते हैं।

21
CGContextFillRect(context, CGRectMake(x,y,1,1)); 
0

मैं एक ही समस्या हो रही है - मैं लगता है सबसे अच्छा समाधान पिछले करने के लिए समान है, लेकिन कम से कम यह कुछ ऐसा है जो एक "पानी का छींटा" ... जाहिर है की तरह लग रहा नहीं छोड़ता, यह सुनिश्चित करना चाहिए एक्स/वाई दोनों हैं 0. 0.

CGContextFillRect (संदर्भ, CGRectMake (x - 0.5, y - 0.5, 1.0, 1.0));

7

मुझे केसीजीलाइन कैपराउंड में लाइन-कैप्स सेट करने के बाद आकर्षित करने के लिए एक बिंदु (शून्य लंबाई रेखा) मिली। डिफ़ॉल्ट लाइन-कैप की लंबाई नहीं है इसलिए इसे खींचा नहीं जा सकता है।

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

शायद यह व्यवहार नया है?

+1

नहीं ऐसा नहीं है। एक बिंदु बस यही है: एक बिंदु। आकार कम से कम एक जोड़ी के बीच की दूरी है। रेखा कैप्स आपके द्वारा खींची गई रेखा की लंबाई के अतिरिक्त हैं; एक गोल टोपी के मामले में, त्रिज्या आधा रेखा चौड़ाई है, इसलिए 1 पीटी रेखा चौड़ाई पर गोल कैप्स वाली शून्य-लंबाई रेखा 1/2 pt त्रिज्या के दो कैप्स खींचती है जिसमें बीच में कुछ भी नहीं होता है, इस प्रकार 1 का चक्र बनाते हैं पीटी व्यास। और नहीं, यह व्यवहार नया नहीं है: लाइन कैप्स, और बाकी क्वार्ट्ज, पोस्टस्क्रिप्ट से पीडीएफ के माध्यम से आया, जो 1 9 85 से पहले था। –

+4

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

+0

यही वह है जिसे मैं ढूंढ रहा था! CGContextSetLineWidth (desiredWidth); CGContextSetLineCap (UIGraphicsGetCurrentContext(), केसीजीलाइन कैपराउंड); फिर बिंदु से एक रेखा खींचें। – rmp251

6

एक बहुत छोटा अंडाकार/सर्कल बनाएं और इसे भरें!

CGContextAddEllipseInRect(Context,(CGRectMake (x_dot, y_dot, 3.0, 3.0)); 
CGContextDrawPath(Context, kCGPathFill); 
CGContextStrokePath(Context); 

मैं इस कोड का उपयोग एक बिंदीदार संगीत नोट में एक छोटा डॉट (3x3 पिक्सेल) बनाने के लिए कर रहा हूं।

0

तेज 3: "। तर्क एक बिंदु कोई आकार मूर्खतापूर्ण है कि"

UIRectFill(CGRect(x: x, y: y, width: 1, height: 1)) 

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

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