在XNA中绘制简单的圆圈

Geo*_*ton 9 c# xna

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

谁知道怎么样?

谢谢!

Jak*_*son 11

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


Joe*_*nez 8

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

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


Ano*_*non 6

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

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;
}
Run Code Online (Sandbox Code Playgroud)

  • [直径定义为半径时间2](https://en.wikipedia.org/wiki/Diameter)。如果您交换这些变量名称会更好。 (2认同)