在XNA中绘制简单的圆圈

我想绘制一个2d,填充的圆圈。 我到处寻找,似乎无法找到任何甚至可以远程帮助我绘制圆圈的东西。 我只想在canvas上指定高度,宽度和位置。

谁知道怎么样?

谢谢!

XNA通常不会想到可以绘制的canvas。 相反,您可以在您喜欢的绘图程序中创建一个圆并将其渲染为精灵,或者在3D网格中创建一个系列顶点以近似圆并渲染它。

您还可以查看Jeff Weber在Farseer中使用的示例框架:
http://www.codeplex.com/FarseerPhysics

演示有一个动态纹理生成器,让他制作圆形和矩形(样本然后用作物理模拟的可视化)。 你可以重复使用:-)

有同样的问题,正如其他人已经建议你需要绘制一个带有圆形纹理的正方形或矩形。 下面是我创建圆形纹理运行时的方法。 不是最有效或最奇特的方式,但它的工作原理。

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; } 

开箱即用,XNA中没有对此的支持。 我假设你来自一些GDI背景,只是想看到屏幕上移动的东西。 但在真实的游戏中,如果需要的话很少。

这里有一些有用的信息:

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

我给你的建议是点燃油漆或其他东西,然后自己创建基本形状并使用内容管道。

似乎有一个使用像素着色器的解决方案 – http://www.xnainfo.com/resources.php?view=Code%20snippets

另一个选项(如果你想使用更复杂的渐变画笔等)是绘制一个与屏幕对齐的四边形并使用像素着色器。