用XNA在c#中绘制线条

本文关键字:绘制 XNA | 更新日期: 2023-09-27 18:12:32

有一个类似的题库系统。在XNA中绘制,但这可能是一个更清晰的问题,因此更容易回答。

我们正在尝试用c#在屏幕上绘制线条。我们正在使用XNA库。这段代码

    void DrawLine2 (Vector2 point1, Vector2 point2)
    {
        System.Drawing.Pen pen = new System.Drawing.Pen(System.Drawing.Color.Green, 1);
        Point p1 = new Point((int)point1.X, (int)point1.Y), p2 = new Point((int)point2.X, (int) point2.Y);
        Graphics.DrawLine (pen, p1, p2);
    }

给出编译时错误:Graphics不存在。

也许我应该在XNA中使用一些东西来画线,而不是在System中——但如果是这样,我不确定是什么。XNA有Spritebatch绘图功能,但我猜你给它一个sprite和一个中心(和一个旋转),而不是2个点。

用XNA在c#中绘制线条

试试这个方便的扩展方法,

public static void DrawLine(this SpriteBatch spriteBatch, Vector2 begin, Vector2 end, Color color, int width = 1)
{
    Rectangle r = new Rectangle((int)begin.X, (int)begin.Y, (int)(end - begin).Length()+width, width);
    Vector2 v = Vector2.Normalize(begin - end);
    float angle = (float)Math.Acos(Vector2.Dot(v, -Vector2.UnitX));
    if (begin.Y > end.Y) angle = MathHelper.TwoPi - angle;
    spriteBatch.Draw(1X1 PIXEL TEXTURE, r, null, color, angle, Vector2.Zero, SpriteEffects.None, 0);
}

Spritebatch可以用来画一条线,正如Beanish所说,你可以简单地制作一个1像素的精灵,并将其扩展到两点之间。

这是一个用于在XNA中绘制2D原语的伟大库,它使用了绘制线条的技术,以及其他对象(如弧)。我广泛使用它:

http://sourceforge.net/projects/primitives2d/