2012-04-11 168 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看起來也會很難看。