用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个点。
试试这个方便的扩展方法,
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/