2010-12-03 16 views
6

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

Texture2D.FromStream(GraphicsDevice graphicsDevice, Stream stream, 
       int width, int height, bool zoom) 

लेकिन मैं भी पढ़ा है कि इस तरह से लोड हो रहा है बनावट ContentManager अनदेखी कर रहा है, और कहा कि मैं कचरा कलेक्टर के लिए काम और अधिक कठिन बना रहा हूं।

ContentManager का उपयोग करके किसी भी आकार में किसी छवि को लोड करने का सही तरीका क्या है? यदि यह संभव नहीं है तो क्या मैं ज़ूम का उपयोग करने के समान आनुपातिक रूप से अपना आकार बदल सकता हूं?

संदर्भ: मैं एन एक्स एन peaces का एक बोर्ड बना रहा हूँ। जब एन बहुत बड़ा होता है तो मुझे स्वचालित रूप से आवश्यकता होती है कि peaces अधिक छोटे हो जाते हैं।

+0

जो का जवाब सही है। इसके अतिरिक्त: कचरा कलेक्टर में कोई फर्क नहीं पड़ता कि आप ContentManager का उपयोग करते हैं या नहीं। यह केवल तभी प्रभावित होता है जब आपको बनावट को अनलोड करना होगा, अगर ऐसा कुछ है जो आपके गेम की आवश्यकता है (उदाहरण: जब स्तरों के बीच बदलते हैं)। यहां मेरे उत्तर पर एक नज़र डालें: http://stackoverflow.com/questions/4264995/how-do-i-unload-content-from-the-content-manager/4265786#4265786। –

उत्तर

10

बनावट लोड करने के लिए:

Texture2D tex = Content.Load<Texture2D>("somefile"); 

यह SpriteBatch भार के कि "पैमाने" http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.graphics.spritebatch.draw.aspx

float scale = .5f; //50% smaller 
SpriteBatch.Draw(tex, position, source, Color.White, rotation, scale, SpriteEffects.None, 0f); 

यदि आप XNA के लिए नए हैं लेता से एक का उपयोग आकार बदलने के लिए, मैं सुझाव है कि आप पढ़ा है this short tutorial, और Education Catalog को create.msdn.com

+0

धन्यवाद !, यह वैसे ही काम करता है जिस तरह से मैं चाहता हूं:) ... अब सवाल के बारे में यदि मैं उपयोग करता हूं या नहीं, तो आप क्या सोचते हैं, या उसका उपयोग अन्य बात है? – mjsr

0
Texture2D texture; 
protected override void LoadContent() 
     { 
... 
     texture = Content.Load<Texture2D>("Tank"); 
... 
     } 
protected override void Draw(GameTime gameTime) 
     { 
... 
     Rectangle destinationRectangle = new Rectangle(100, 100, 30, 10); 
     spriteBatch.Draw(texture, destinationRectangle, Color.White); 
... 
     spriteBatch.End(); 
     base.Draw(gameTime); 
     } 
पर भी देखें
+1

स्टैक ओवरफ़्लो में आपका स्वागत है! कोड-केवल उत्तर बहुत उपयोगी नहीं हैं। कृपया अपना उत्तर दें कि यह समझाने के लिए कि आपका कोड मूल समस्या क्यों हल करता है। –