2010-03-25 15 views
8

में सरल सर्कल बनाएं I 2 डी, भरे, सर्कल को आकर्षित करना चाहते हैं। मैंने हर जगह देखा है और ऐसा कुछ भी नहीं ढूंढ रहा है जो मुझे एक सर्कल बनाने में दूरस्थ रूप से मदद करेगा। मैं बस अपने कैनवास पर ऊंचाई और चौड़ाई और स्थान निर्दिष्ट करना चाहता हूं।एक्सएनए

कोई भी जानता है कि कैसे?

धन्यवाद!

उत्तर

11

एक्सएनए आमतौर पर कैनवास का विचार नहीं करता है जिसे आप पेंट कर सकते हैं। इसके बजाए आप या तो अपने पसंदीदा पेंट प्रोग्राम में एक सर्कल बना सकते हैं और इसे एक स्प्राइट के रूप में प्रस्तुत कर सकते हैं या एक सर्कल का अनुमान लगाने के लिए एक 3 डी जाल में एक श्रृंखला वर्टेक्स बना सकते हैं और उसे प्रस्तुत कर सकते हैं।

+0

ऐसा लगता है कि यह अच्छी तरह से काम करेगा। धन्यवाद! –

3

बॉक्स के बाहर, XNA में इसके लिए कोई समर्थन नहीं है। मुझे लगता है कि आप कुछ जीडीआई पृष्ठभूमि से आ रहे हैं और बस ऑनस्क्रीन के आसपास कुछ चलना चाहते हैं। असली गेम में हालांकि, शायद ही कभी इसकी आवश्यकता होती है।

http://forums.xna.com/forums/t/7414.aspx

आप के लिए मेरी सलाह सिर्फ पेंट या कुछ आग, और बुनियादी आकार अपने आप बनाते हैं और सामग्री पाइपलाइन का उपयोग करने के होगा:

यहाँ कुछ उपयोगी जानकारी नहीं है।

2

एक और विकल्प (यदि आप अधिक जटिल ढाल ब्रश या कुछ का उपयोग करना चाहते हैं) स्क्रीन पर गठबंधन किया गया ट्रैक्टर खींचना और पिक्सेल शेडर का उपयोग करना है।

8

तुम भी नमूना रूपरेखा है कि जेफ वेबर Farseer में उपयोग करता है की जाँच कर सकते हैं:
http://www.codeplex.com/FarseerPhysics

क़ौम एक गतिशील बनावट जनरेटर है कि उसे हलकों और आयतों (जो नमूने तो के दृश्य के रूप में उपयोग करते हैं है भौतिकी सिमुलेशन)। तुम बस फिर से उपयोग कर सकता है :-)

5

एक ही समस्या थी, दूसरों को पहले से ही सुझाव के रूप में आप एक साथ एक वर्ग या आयत आकर्षित करने की आवश्यकता उस पर सर्कल बनावट। सर्कल बनावट रनटाइम बनाने के लिए यहां मेरी विधि का पालन किया गया है। ऐसा करने के लिए सबसे कुशल या फैंसी तरीका नहीं है, लेकिन यह काम करता है।

Texture2D createCircleText(int radius) 
{ 
    Texture2D texture = new Texture2D(GraphicsDevice, radius, radius); 
    Color[] colorData = new Color[radius*radius]; 

    float diam = radius/2f; 
    float diamsq = diam * diam; 

    for (int x = 0; x < radius; x++) 
    { 
     for (int y = 0; y < radius; y++) 
     { 
      int index = x * radius + y; 
      Vector2 pos = new Vector2(x - diam, y - diam); 
      if (pos.LengthSquared() <= diamsq) 
      { 
       colorData[index] = Color.White; 
      } 
      else 
      { 
       colorData[index] = Color.Transparent; 
      } 
     } 
    } 

    texture.SetData(colorData); 
    return texture; 
} 
संबंधित मुद्दे