2016-03-18 10 views
6

लागू करने के लिए जावाएफएक्स आकार वर्ग का विस्तार कैसे करें मैं कुछ समस्या विशिष्ट 2 डी ज्यामिति मॉडल करने के लिए किसी एप्लिकेशन पर काम कर रहा हूं। और निश्चित रूप से मैं उपयोगकर्ता को वास्तव में इसे देखने के लिए स्क्रीन पर उस ज्यामिति को आकर्षित करना चाहता हूं।कस्टम आकार

जावाएफएक्स में आयताकार, अंडाकार आदि जैसे कुछ 2 डी आकार हैं। इसमें क्यूबिक और क्वार्टिक वक्र भी हैं, जो बेजियर वक्र के रूप में लागू होते हैं। कस्टम आकृतियों की खोज में मदद नहीं मिली, क्योंकि मैंने जो कुछ पाया वह पथों जैसे कुछ आकार तत्वों को लेने और दिल या हीरे जैसे कस्टम आकार को आकर्षित करने के लिए उन्हें एक साथ रखने का उदाहरण था। आकार वर्ग को विस्तारित करके एक नए आकार को कार्यान्वित करने के तरीके के बारे में जानकारी के लिए खोज करना भी कम सहायक था।

जो मैं आकर्षित करना चाहता हूं वह मनमानी क्रम और लंबाई के बी-स्पलाइन वक्र हैं। मुझे पता है कि स्प्लिंस की गणना कैसे करें और इसे कैसे कार्यान्वित करें, लेकिन मुझे नहीं पता कि उन्हें नए आकार, या आकार के लपेटने के रूप में कैसे कार्यान्वित किया जाए।

मैंने जावाएफएक्स और वृत्तचित्र के स्रोत कोड को देखा। ऐसा लगता है जैसे वे आकार कुछ प्रकार के रैपर वर्ग हैं। जैसे एलिप्स वर्ग में सदस्य के रूप में एक अंडाकार होता है, जो ज्यामिति पैकेज का हिस्सा है। यह रिकर्सन बहुत दूर चला जाता है।

अब वक्र को वास्तव में आकर्षित करने के लिए जावाफैक्स का उपयोग करने के लिए कुछ प्रकार की विधि होनी चाहिए, लेकिन मुझे यह नहीं मिला।

तो मैं उदाहरण बनाने के लिए जावाएफएक्स आकार कैसे बढ़ा सकता हूं एक स्पलीन वर्ग? इसे आकर्षित करने के लिए जावा के लिए कौन सी विधियां/कक्षाएं महत्वपूर्ण हैं?

मुझे आशा है कि कोई मेरी मदद कर सकता है।

भवदीय Thorsten

+0

क्या आप अधिक विस्तार से व्याख्या कर सकते हैं [पथ] (http://docs.oracle.com/javase/8/javafx/api/javafx/scene/shape/Path.html) (जो आकार बढ़ाता है) पर्याप्त नहीं है ? – VGR

+1

मुझे नहीं लगता कि आप सीधे आकार का विस्तार करने में सक्षम होंगे और आपके विस्तारित आकार को एपीआई पर भरोसा किए बिना प्रदान किए जाएंगे: "@ डीप्रैकेटेड यह एक आंतरिक एपीआई है जिसका उपयोग करने के लिए नहीं है और अगले संस्करण में हटा दिया जाएगा"। – jewelsea

+0

@ वीजीआर पथ के साथ मैं बस विभिन्न आकारों को एक साथ जोड़ता हूं। यह मुझे मानक आकार वर्गों तक सीमित करता है। तो, उदाहरण के लिए, मैं केवल चौथी डिग्री तक वक्र आकर्षित कर सकता था। प्रीबिल्ड क्लास के साथ सबकुछ के लिए मुझे प्रीबिल्ड आकृति वर्गों के साथ वक्र बनाना होगा और बनाने और अनुमान लगाने के लिए वक्र और रेखा खंडों को एक साथ रखना होगा। –

उत्तर

0

मैं उनके आकार लागू किया गया है कि कैसे JSilhoutte पर एक नज़र डालें चाहते हैं।

Cross उदाहरण के लिए, Shape विस्तार नहीं करता है, लेकिन यह एक Shape उत्पन्न दो आयतों बनाने और Shape.union का उपयोग कर उन्हें संयोजन के द्वारा एक क्रॉस का प्रतिनिधित्व।

@Override 
protected void calculateShape() { 
     double cx = getCenterX(); 
     double cy = getCenterY(); 
     double r = getRadius(); 
     double n = validateRoundness(getRoundness()); 
     double w = validateWidth(getWidth(), r); 

     double arcWH = w * n; 
     Rectangle beam1 = new Rectangle(cx - r, cy - (w/2), r * 2, w); 
     Rectangle beam2 = new Rectangle(cx - (w/2), cy - r, w, r * 2); 
     beam1.setArcWidth(arcWH); 
     beam1.setArcHeight(arcWH); 
     beam2.setArcWidth(arcWH); 
     beam2.setArcHeight(arcWH); 
     Shape shape = Shape.union(beam1, beam2); 

     shape.getStyleClass().addAll("silhouette", "silhoutte-cross"); 

     setShape(shape); 
} 

तो तुम Shape.union इस्तेमाल कर सकते हैं एक साथ मनमाना आदेश और लंबाई के अपने बी तख़्ता घटता बनाने के लिए कई CubicCurve/QuadCurve आकार गठबंधन करने के लिए: यहाँ प्रासंगिक तरीका है।

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