2012-04-11 7 views
0

私は、ユーザーが絶え間なく成長しているライン(Tronゲーム)を操作できるようにするプログラムを持っていますが、私が抱えている問題は、プレーヤーが回ったときにコーナーの表示に問題があることです。 1ピクセル幅の広いのペンのために、何も問題はありませんが、ペンのサイズが増加した場合、問題がより明らかになった....角の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; 
    } 

私は衝突を保存するにはfrom自身のサイズである2Dグリッド内に配置します。それぞれの位置で、私は配列の自転車の価値を与える。ワイド15ピクセルで、ここで見

:行は、あなたが選択した時点で終了するので Tron offset

+0

これはGDI +/Graphicsですか、これは実際の.NET Canvasライブラリですか? – Ryan

+0

.NETグラフィックスクラス(私は元の投稿を更新しました) –

+0

@IanMcCullough - インデントされたコーナーのようなもの:) –

答えて

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コマンドを使用しないでください。 1つのループで1つずつではなく、すべてDrawLinesコマンドを使用して線を描画すると、線の方がずっとよく見えます。 And:アルファチャンネルを使用し始めると、一番美しいLineCapsは本当に醜いように見えます。

関連する問題