Monday 15 June 2015

java - How do I make the circle bigger than the arcs inside without going off center? -


यह मेरा कोड है:

  आयात करें java.awt.Graphics; आयात करें java.awt.GridLayout; आयात javax.swing.JPanel; आयात javax.swing.JFrame; सार्वजनिक वर्ग के चौफ्रेट्स जेफ्रेम {सार्वजनिक चारफन () {setTitle ("DrawArcs") में फैली हुई है; जोड़ (नया आर्क्सपैनल ()); जोड़ (नया आर्क्सपैनल ()); जोड़ (नया आर्क्सपैनल ()); जोड़ (नया आर्क्सपैनल ()); } सार्वजनिक स्थिर शून्य मुख्य (स्ट्रिंग [] आर्ग्स) {चौफिंस फ्रेम = नया चौफन (); ग्रिड लेआउट परीक्षण = नया ग्रिड लेआउट (2,2); frame.setLayout (परीक्षण); Frame.setSize (250, 300); frame.setLocationRelativeTo (शून्य); // केंद्र फ्रेम फ्रेम। सेटडिफ़ॉल्ट क्लोज ऑपरेशन (JFrame.EXIT_ON_CLOSE); frame.setVisible (सही); }} क्लास ArcsPanel JPanel {संरक्षित void paintComponent (ग्राफिक्स जी) {super.paintComponent (जी); Int xCenter = getWidth () / 2; Int yCenter = getHeight () / 2; इंट त्रिज्या = (इंट) (मैथ। मीन (getWidth), getHeight ()) * 0.4); Int x = xCenter - त्रिज्या; Int y = yCenter - त्रिज्या; जीफिलएआरसी (एक्स, वाई, 2 * त्रिज्या, 2 * त्रिज्या, 0, 30); G.fillArc (एक्स, वाई, 2 * त्रिज्या, 2 * त्रिज्या, 90, 30); G.fillArc (एक्स, वाई, 2 * त्रिज्या, 2 * त्रिज्या, 180, 30); G.fillArc (एक्स, वाई, 2 * त्रिज्या, 2 * त्रिज्या, 270, 30); G.draw ओवल (एक्स, वाई, 2 * त्रिज्या, 2 * त्रिज्या); }}   

हर बार मैं 2 * त्रिज्या से 2.1 * त्रिज्या बदलने की कोशिश करता हूं, यह मुझे दोहरा नहीं करता क्योंकि यह एक डबल है तब जब मैंने एक निश्चित संख्या में रखा जो आर्क्स से बड़ा होता है, तो यह सर्कल ऑफ सेंटर को बनाता है।

आर्क की तुलना में बड़ी संख्या में डालने का कारण यह है कि आपका वर्तुळा केंद्र बंद हो जाता है क्योंकि जावा आप सर्कल / सर्कल आर्क की उत्पत्ति के बजाय एक्स, वाई के रूप में ऊपरी बाएं कोने को प्लगइन करते हैं इसलिए यदि आप इनमें से एक को बड़ा बनाते हैं तो आपको उसकी पुनरावृत्ति करना होगा कि उसका एक्स और वाई क्या होगा, उदाहरण के लिए

  int radius = (int) (math.min (getWidth), getHeight () ) * 0.4); इंट रेडियस ओवल = (इंट) (मैथ। मिन (getWidth), getHeight ()) * 0.4 * 1.05); Int x = xCenter - त्रिज्या; Int y = yCenter - त्रिज्या; Int xOval = xCenter - त्रिज्या ओवल; Int yOval = yCenter - त्रिज्या ओवल; जीफिलएआरसी (एक्स, वाई, 2 * त्रिज्या, 2 * त्रिज्या, 0, 30); G.fillArc (एक्स, वाई, 2 * त्रिज्या, 2 * त्रिज्या, 90, 30); G.fillArc (एक्स, वाई, 2 * त्रिज्या, 2 * त्रिज्या, 180, 30); G.fillArc (एक्स, वाई, 2 * त्रिज्या, 2 * त्रिज्या, 270, 30); G.draw ओवल (एक्सवॉल, ओवल, (इंट) (2.1 * त्रिज्या), (इंट) (2.1 * त्रिज्या));    

No comments:

Post a Comment