2012-11-06 8 views
7

में पाठ के आयाम प्राप्त करना मैं सोच रहा था कि मुझे एसएफएमएल में अपने पाठ के आयाम कैसे प्राप्त होते हैं?एसएफएमएल

मैं इस तरह यह करने की कोशिश की:

sf::Text text("Hello SFML", font, 50); 

// using text.getRect() 
// i also tried getScale() & getSize() 
// neither are correct 

text.setPosition(window.getSize().y/2 - text.getRect().y,50); 

किसी भी एक पता है?

धन्यवाद :)

उत्तर

13

प्रलेखन यह समारोह getLocalBounds आप के लिए काम का हो सकता है की तरह लगता है पर देख रहे हैं। लाइन होगा:

float width = text.getLocalBounds().width; 

मैं अगर sf::Text वस्तु सीमांकन आयत के सिरों पर किसी भी गद्दी जोड़ना होगा यकीन नहीं है।

वैकल्पिक रूप से, आप की तरह कुछ के साथ findCharacterPos का उपयोग कर सकता:

float width = text.findCharacterPos(numChars - 1).x - text.findCharacterPos(0).x; 

जहां numChars अपने text वस्तु की स्ट्रिंग में वर्णों की संख्या है। हालांकि, findCharacterPos वैश्विक निर्देशांक लौटाएंगे, इसलिए getLocalBounds का उपयोग करना शायद अधिक सुविधाजनक है, इस तरह आपको इस बारे में चिंता करने की आवश्यकता नहीं है कि आपके text ऑब्जेक्ट में कोई परिवर्तन लागू है या नहीं।

+1

स्थानीय सीमाएं पूरी तरह से काम करती हैं! धन्यवाद ! – Sir

0

आप परिवर्तन के बाद आकार/निर्देशांक प्राप्त करने के लिए getGlobalBounds() का उपयोग कर सकते हैं (रोटेशन, स्केल, मूव ...)। अन्यथा यह मिलता है LocalBounds()।

डॉक्टर: http://www.sfml-dev.org/documentation/2.3.1/classsf_1_1Text.php

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