के "केंद्र" में लेबल डालें मैं एक svg फ़ाइल के बहुभुज पर एक लेबल खींचने की कोशिश कर रहा हूं। जिस समस्या का मैं सामना कर रहा हूं वह लेबल को रखने के लिए मोटे तौर पर इस बहुभुज का केंद्र ढूंढना है, क्योंकि पथ के निर्देशांक svg प्रारूप में हैं और उन्हें पार्स करने की आवश्यकता है। क्या एक एसवीजी पॉलीगॉन के केंद्र को निर्धारित करने का कोई आसान तरीका है (शायद कोई जावास्क्रिप्ट लाइब्रेरी या स्निपेट इंगित कर सकता है)? मैं svg में हेरफेर करने के लिए राफेल जावास्क्रिप्ट लाइब्रेरी का उपयोग कर रहा हूं, लेकिन यह मानक svg कार्यक्षमता से परे प्रतीत नहीं होता है।एक एसवीजी पथ
उत्तर
सबसे आसान चीज जो आप कोशिश कर सकते हैं वह बहुभुज में सभी बिंदुओं का औसत ले कर केंद्र की गणना करना है। यह बहुभुज के सबसे अनियमित लेकिन सभी के लिए काम करना चाहिए। मैंने अपने कार्यक्रमों में अच्छे प्रभाव के लिए एक ही एल्गोरिदम का उपयोग किया है।
शुभकामनाएं।
आप बहुभुज सुझाव के लिए इसी तरह कुछ कर रही निम्नलिखित सन्निकटन की कोशिश कर सकते एसवीजी डोम तरीकों के आधार पर:
var totalPathLength = pathelm.getTotalLength();
var step = totalPathLength/100;
for(var dist=0; dist < totalPathLength; dist+=step)
{
var pt = pathelm.getPointAtLength(dist);
addToAverage(pt.x, pt.y);
}
मुझे लगता है कि सबसे सरल दृष्टिकोण पथ तत्व के boundingbox (pathelm के केंद्र का प्रयोग है। getBBox()), यह बहुभुज सुझाव से सरल है।
पीएस: 'var bbox = p.getBBox(); var x = Math.floor (bbox.x + bbox.width/2.0); var y = Math.floor (bbox.y + bbox.height/2.0); 'मेरे लिए चाल थी, thx। – lwe
धन्यवाद @Iwe! यह बहुत आसान था कि मैं कल्पना कर सकता था :) – Viet
@ आईवे की टिप्पणी एक अलग जवाब होने का हकदार है। यह विभिन्न पेशेवरों और विपक्ष के साथ एक सरल, अलग दृष्टिकोण है। यहां एक वियतनाम और कनाडा देश के आकार ** [http://jsbin.com/orAzoFI/3/edit) का उपयोग करके दोनों का एक जेएसबीआईएन डेमो है ... (http://jsbin.com/orAzoFI/3/edit) कुछ महत्वपूर्ण बिंदुओं और मतभेदों को दिखाता है: न तो विधि ग्रेनटेस केंद्र के अंदर होगा आकार, और यह कि एरिक की विधि केंद्र के पथ के हिस्सों की तरफ खींचती है जो अधिक फ्रैक्चर/जटिल/उच्च रिश्तेदार परिधि है। – user568458
चौड़ाई और hight की गणना
<svg width="447pt" height="559pt" viewBox="0 0 894 1118" version="1.1" xmlns="http://www.w3.org/2000/svg">
............
............
<text x="450" y="300" font-family="Verdana" font-size="15" fill="red" >
Text To Show
</text>
</svg>
- 1. एसवीजी पथ
- 2. एसवीजी पथ
- 3. एसवीजी पथ
- 4. एसवीजी पथ सी #
- 5. एसवीजी पथ डेटा के साथ कैनवास में पथ ड्रा (कैनवास रास्तों को एसवीजी पथ)
- 6. पार्स एसवीजी: पथ डी विशेषता
- 7. एसवीजी: पथ समूह <g> टैग
- 8. एसवीजी
- 9. क्या एक एसवीजी फ़ाइल से एसवीजी पथ बनाने के लिए कोई उपकरण है?
- 10. एसवीजी
- 11. एसवीजी: एक छवि खींच
- 12. एक एसवीजी ढाल एनीमेशन
- 13. एक एसवीजी स्वचालित करें?
- 14. एसवीजी: वक्र को हटाने के लिए पथ को सरल बनाएं?
- 15. एसवीजी में, जो हल्का है: बहुभुज या पथ?
- 16. अनवरोधित एसवीजी पथ बंद होना प्रतीत होता है
- 17. पाठ को एसवीजी पथ में कैसे परिवर्तित करें?
- 18. एसवीजी पथ से संबंधित कमांड में कनवर्ट करें
- 19. आयत के भीतर एसवीजी क्लिप-पथ काम नहीं करता
- 20. एसवीजी पथ में "सी" का क्या अर्थ है?
- 21. एसवीजी
- 22. एसवीजी
- 23. एसवीजी
- 24. एसवीजी
- 25. एसवीजी
- 26. एसवीजी
- 27. एसवीजी
- 28. एसवीजी
- 29. एसवीजी
- 30. एसवीजी
क्षमा करें, स्पष्ट रूप से मेरे सवाल phrasing नहीं करने के लिए द्वारा svg और यह स्थिति के अंदर एक पाठ टैग डालें। समस्या इस पथ में <पथ डी = "एम 100 100 एल 300 100 एल 200 300 जेड" भर = "लाल" स्ट्रोक = "नीला" स्ट्रोक- पथ के डी-एट्रिब्यूट से निर्देशांक कैसे प्राप्त करें, इस बारे में अधिक समस्या है। चौड़ाई = "3" /> केंद्र की गणना करने के लिए या जावास्क्रिप्ट लाइब्रेरी खोजने के लिए जो मेरे बिना svg spec के अनुसार विशेषता को पार्स कर रहा है। – sol
पहले हल करने वाली पहली समस्या svg को बहुभुज में परिवर्तित करना है। मैं svg पथ को बहुभुज में परिवर्तित करने के लिए एक कोड खोज रहा हूं लेकिन एक नहीं मिला। शायद एसवीजी परियोजनाओं के स्रोत कोड पर खुदाई करना है – ivanceras