2011-01-25 16 views
31

माप की कौन सी इकाई Paint.setStrokeWidth() का उपयोग करती है और क्या मुझे वर्तमान स्क्रीन घनत्व के आधार पर इस मान को स्केल करने की आवश्यकता है?माप की कौन सी इकाई Paint.setStrokeWidth() का उपयोग करती है?

यह एक फ्लोट वैल्यू है इसलिए मुझे पता है कि यह कई पिक्सल नहीं है। यह किसी चीज़ के सापेक्ष होना चाहिए।

यह वह जगह है सभी दस्तावेज़ इस लेखन के रूप में कहते हैं:

पथपाकर के लिए चौड़ाई सेट करें। हेयरलाइन मोड में स्ट्रोक करने के लिए 0 पास करें। हा सर्क हमेशा कैनवास के मैट्रिक्स से स्वतंत्र एक पिक्सेल खींचता है।

उत्तर

30

स्ट्रोक चौड़ाई (हाँ यह एक नाव है, और वहाँ पिक्सल :)

+0

हाय रोमेन, मैं ApiDemos से PathEffect उदाहरण की कोशिश की है और स्ट्रोक की चौड़ाई 6 को तैयार है। जब मैं अपनी एचडीपीआई मोबाइल फोन स्क्रीन पर चौड़ाई मापता हूं तो यह 9 पीएक्स है। ऐसा लगता है कि प्रारंभिक स्ट्रोक चौड़ाई मान घनत्व से गुणा किया जाता है। क्या मुझे वास्तविक चौड़ाई प्राप्त करने के लिए घनत्व से विभाजित मूल्य प्रदान करना चाहिए? – Zzokk

+5

मुझे विश्वास नहीं है कि रोमेन का जवाब सही है। मेरे वर्तमान परीक्षण डिवाइस (एचटीसी वन एक्स, 2.0 की घनत्व के साथ) पर मैंने पाया है कि 'setStrokeWidth() 'को वांछित स्ट्रोक चौड़ाई 1.5 से विभाजित किया जाना चाहिए। फिर, चौड़ाई ठीक वैसे ही होनी चाहिए। अन्यथा, यह बहुत व्यापक है। 1.5 कारक वास्तव में ज़ज़ोक को मिला (6 पीएक्स बनाम 9 पीएक्स) के साथ सहमत है, सिवाय इसके कि मैं सवाल करता हूं कि यह घनत्व से संबंधित है, क्योंकि वन एक्स 2.0 है, 1.5 नहीं। तो इस 1.5 कारक की उत्पत्ति इस समय मुझे परेशान कर रही है। – Trevor

+0

अरे !! मैं इस संदेह को हल करने के लिए यहां आया था। मैंने देखा @ रोमेन गाय ने जवाब दिया और मैंने सोचा "हमारे पास निश्चित रूप से जवाब है", लेकिन फिर टिप्पणियों में यह इतना आसान प्रतीत नहीं होता है। वैसे भी मैंने बस इसके साथ सौदा करने की कोशिश की है जैसे कि यह पिक्सल डीपी से पिक्सल में कनवर्ट करना पसंद है ... और ऐसा लगता है कि यह विभिन्न स्क्रीन आकारों के लिए काम कर रहा है ... – Sotti

19

setStrokeWidth पिक्सल का उपयोग करता है के भिन्न उपयोग करने के साथ कोई समस्या नहीं है पिक्सल में परिभाषित किया गया है। तो तुम चित्रकला के लिए पिक्सल के लिए डीपीएस कन्वर्ट करने के लिए:

 int dpSize = 10; 
     DisplayMetrics dm = getResources().getDisplayMetrics() ; 
     float strokeWidth = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dpSize, dm); 
     paint.setStrokeWidth(strokeWidth); 
+0

या आप उस मान को चिपका सकते हैं जहां संबंधित है - dimens.xml और फिर बस यह करें: paint.setStrokeWidth (getContext()। GetResources()। GetDimensionPixelSize (R.dimen.stroke_width)); – slott

+0

यह अभी भी काम नहीं करता है, मेरे स्ट्रोक सभी अलग-अलग उपकरणों पर अलग दिखाई देते हैं, किसी ने इसे ठीक किया है ?? – 68060

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

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