2012-12-07 90 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,位置和颜色给你喜欢。