2011-06-04 16 views
6

मैं NSDrawNinePartImage के साथ कस्टम बटन/टेक्स्टफील्ड ड्राइंग पर काम कर रहा हूं। मैं कोड में नौ भागों में एक छवि को टुकड़ा करता हूं और इसे NSDrawNinePartImage के साथ एक रेक्ट में खींचता हूं।NSDrawNinePartImage अंतराल

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

मुझे पूरा भरोसा है कि यह वास्तविक ड्राइंग पर आता है।

क्या आप किसी भी NSGraphicsContext या अन्य सेटिंग्स को प्रभावित करते हैं जो इसे प्रभावित करेंगे या ऐसा कुछ और हो सकता है?

अंतराल

With gaps

साथ

अंतराल

Without gaps

+0

मैं अपनी परियोजनाओं में से एक में एक ही बात ध्यान दिया द्वारा एक ऐसी ही समस्या का समाधान हो। मैंने छवियों को सहेजा है और उन्हें एक नई परियोजना में NSDrawNinePartImage के साथ आकर्षित किया है, और वे ठीक हैं। जब मैं उन्हें अपने कस्टम बटन में खींचता हूं, तो उनके पास अंतर होता है। –

+0

क्या आप वाकई पिक्सेल सीमाओं पर चित्रित कर रहे हैं? पहली छवि में, ऐसा लगता है कि कुछ उप-पिक्सेल प्रतिपादन है जो मैं दूसरी छवि में नहीं देख सकता। – kperryua

+3

चूंकि मेरा उत्तर हटा दिया गया था, इसलिए मैं यहां आपके अनुवर्ती प्रश्न का उत्तर दूंगा। जहां आप अपना नौ हिस्सा खींचते हैं, उस नाम पर '- [NSView convertRect: toView: nil]' का उपयोग करें, जिसे आप 'NSDrawNinePartImage' पर पास करते हैं और परिणाम प्रिंट करते हैं। यदि कोई गैर-अभिन्न मूल्य हैं, तो यह आपकी समस्या का कारण हो सकता है। यह सुनिश्चित करने के लिए कि रेक्ट केवल पिक्सेल सीमाएं हैं, '- [NSView centerScanRect:]' जैसे कुछ का उपयोग करें। – kperryua

उत्तर

1

बिना क्या यह संभव है कि अपने ऊपरी बाएँ और निचले दाहिने छवियों को एक पिक्सेल भी चौड़ा कर रहे हैं?

इस फ़ंक्शन का उपयोग करता को ऊपर-बाएं और निचले दाएं कोने छवियों चौड़ाई और किनारे क्षेत्रों भरा होने की जरूरत है कि की ऊंचाई निर्धारित करते हैं। यदि नीचे-बाएं और शीर्ष-दाएं छवियों की चौड़ाई या ऊंचाई उचित रूप से आकार में नहीं है, तो उन्हें अपने कोने क्षेत्र को भरने के लिए स्केल किया जा सकता है। कोनों के बीच एज क्षेत्र संबंधित छवि का उपयोग करके टाइल किए जाते हैं। इसी प्रकार, केंद्र क्षेत्र निर्दिष्ट केंद्र छवि का उपयोग करके टाइल किया गया है।

0

छवियों में भी आकारों का उपयोग करें। मैंने यह किया, और यह मेरे लिए इस समस्या को हल किया।

4

मैं अक्षम विरोधी उर्फ ​​विकल्प

NSGraphicsContext* theContext = [NSGraphicsContext currentContext]; 
[theContext saveGraphicsState]; 
[theContext setShouldAntialias: NO]; 
NSDrawNinePartImage(...); 
[theContext restoreGraphicsState]; 
संबंधित मुद्दे