2012-12-07 85 views
2

我是新來的XNA和現在我使用此代碼繪製一個矩形:填寫2D矩形

// Calculate particle intensity 
intense = (int)((float)part.Life/PARTICLES_MAX_LIFE); 
// Generate pen for the particle 
pen = new Pen(Color.FromArgb(intense * m_Color.R , intense * m_Color.G, intense * m_Color.B)); 
// Draw particle 
g.DrawRectangle(pen, part.Position.X, part.Position.Y, 
    Math.Max(1,8 * part.Life/PARTICLES_MAX_LIFE), 
    Math.Max(1,8 * part.Life/PARTICLES_MAX_LIFE)); 
pen.Dispose(); 

所有的方式來填充的顏色,我在網上找到這麼想的矩形似乎適用到我畫矩形的方式。我如何填充顏色?

+0

您確定這是XNA代碼嗎?這看起來更像我的GDI。 –

+0

說實話我在網上發現了這個代碼,並且線程是關於xna中的粒子的...但是它仍然可以用作visual studio中的xna – AntoineLev

+0

這絕對不像XNA。在XNA中,您可以通過製作1px x 1px貼圖來繪製矩形,並使用如下所示的SpriteBatch:'spriteBatch.Draw(pixelTexture,new Rectangle(x,y,width,height),color);' – flai

回答

10

你的代碼看起來很可能是爲GDI而不是XNA製作的,因此它不能正常工作。

但是,XNA包含非常有用的Rectangle結構。

這意味着,你可以在「擴展」的圖像填充矩形,所以創建一個新的Texture2D是1x1像素的,並提請增加大小時伸展尺寸。(或者你可以加載一個)

Texture2D texture = new Texture2D(graphics, 1, 1, false, SurfaceFormat.Color); 
texture.SetData<Color>(new Color[] { Color.White }); 
return texture; 

您可以結合使用這個小紋理與Rectangle based overload方法SpriteBatch

spriteBatch.Draw(texture, new Rectangle(X, Y, Width, Height), Color.White); 

更改WidthHeight,位置和顏色給你喜歡。