2012-04-11 100 views
0

我有一个允许用户操纵不断增长的线程(Tron游戏)的程序,但是我遇到的问题是当玩家转弯时,角落出现时出现问题。对于1px的宽的笔,也没有问题,但是当笔的尺寸增大,这个问题就更加明显了....角落的DrawLine偏移量

下面是代码:

canvas = this.CreateGraphics(); 
    foreach (LightBike b in bikes) //draw bikes 
    { 
     canvas.DrawLine(new Pen(b.color, BIKE_SIZE), b.getPreviousLocation(), b.location); 
     grid[b.location.X, b.location.Y] = bikes.IndexOf(b)+1; 
    } 

我店碰撞在一个二维网格中,它是自身的大小。在每个位置,我给出了阵列中的自行车价值。

这里看到在15px的宽: Tron offset

+0

这是GDI +/Graphics,还是这是一些实际的.NET Canvas库? – Ryan 2012-04-11 00:54:26

+0

.NET图形类(我已经更新了原帖) – 2012-04-11 00:56:23

+0

@IanMcCullough - 我有点像缩进的角:) – 2012-04-11 00:56:53

回答

1

这是因为该行以你选择的点结束。解决方法是容易 - 只需告诉Pen在每行的起点和终点绘制一个正方形帽:

canvas.DrawLine(new Pen(b.color, BIKE_SIZE) { 
    EndCap = System.Drawing.Drawing2D.LineCap.Square, 
    StartCap = System.Drawing.Drawing2D.LineCap.Square 
}, b.getPreviousLocation(), b.location); 
0

不要使用的DrawLine命令来绘制连接的线路。如果你不是在一个循环中逐一绘制它们,而是使用DrawLines命令将它们一一绘制,那么线条看起来会好很多。 并且:一旦你开始使用alpha通道,即使最好的LineCaps看起来也会很难看。