2011-06-11 6 views
5

तो मैं Canvas.drawText का प्रयोग कर एक कैनवास पर कुछ स्ट्रिंग आकर्षित करने के लिए। मुद्दा यह है कि मैं इससे पहले एक आयताकार बनाना चाहता हूं ताकि पाठ आयताकार पर केंद्रित हो। लेकिन मैंने एक असली समस्या मारा। आपूर्ति की एक्स और ydrawText को निर्देशांक वास्तव में के नहीं हैं "शीर्ष छोड़ दिया" वास्तविक पाठ के कोने, बल्कि लाइन जहां पात्रों शुरू पर। एक विधि पेंट.getTextBounds है जो खींचे जाने वाले पाठ के (0,0) पर एक आयत "अंतर्निहित उत्पत्ति के साथ" आयता है। मुद्दा यह है कि उत्पत्ति (0,0) पर है। उस बॉक्स की चौड़ाई और ऊंचाई सही है लेकिन मुझे नहीं पता कि कैनवास पर खींची गई स्ट्रिंग के ऊपरी बाएं कोने में अपने ऊपरी बाएं कोने को कैसे रखा जाए। मुझे लगता है कि मुझे फ़ॉन्टमैट्रिक्स का उपयोग करना चाहिए, लेकिन चूंकि बहुत सारे मान फ़ॉन्टमैट्रिक्स रिटर्न अनियंत्रित हैं, मुझे सचमुच यकीन नहीं है कि मेरे उद्देश्य के लिए उनका उपयोग कैसे किया जाए।एक Android कैनवास पर एक स्ट्रिंग के चारों और आयत फ़िट

उत्तर

12

का उपयोग कर रहा

FontMetrics fm = new FontMetrics(); 
paint.setTextAlign(Paint.Align.CENTER); 
paint.getFontMetrics(fm); 
canvas.drawText(text, x, y + -(fm.ascent + fm.descent)/2, paint); 

कौन वास्तव में पाठ एक्स पर केन्द्रित खींचता है, y कर समाप्त हो गया ड्राइंग आयत का प्रयास करें। कि इससे पहले कि मैं एक आयत एक्स पर केन्द्रित, चौड़ाई paint.measureText साथ y (पाठ)

+0

पर कोई भी हल करने के लिए मैंने थोड़ी देर के लिए एक आयत में उस पाठ को आकर्षित करने के लिए संघर्ष किया है। आपका बहुत बहुत धन्यवाद! –

1

canvas.drawRect(x, y - Paint.GetTextSize(), x + Paint.measureText("text"), y, Paint);

+0

मुझे लगता है कि यह काम करेगा, हालांकि मैं एक और बात यह है कि यह भी तो अब मेरे लिए काम किया कर समाप्त हो गया आकर्षित मैं यह देखने की कोशिश नहीं कर सकता कि यह विधि काम करती है या नहीं। वैसे भी धन्यवाद :) –

+0

यह एक्स और वाई क्या है? – ranjith

+0

इस संदर्भ में, एक्स और वाई हैं जहां ओपी टेक्स्ट खींच रहा है, उत्तर इस पाठ के चारों ओर एक बॉक्स खींचना है। – eyespyus

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