0

我有一个程序允许用户操纵不断增长的线(Tron 游戏),但我遇到的问题是当玩家转身时,角落的出现方式存在问题。对于 1px 宽的笔,没有问题,但是当笔的大小增加时,问题变得更加明显....

这是代码:

    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;
    }

我将碰撞存储在一个 2D 网格中,该网格是 from 本身的大小。在每个位置,我给出数组中自行车的值。

在这里看到 15px 宽: Tron 偏移

4

2 回答 2

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);
于 2012-04-11T00:57:06.583 回答
0

不要使用DrawLine命令绘制连接线。如果你不是在循环中一个接一个地绘制线条,而是使用DrawLines命令将线条全部绘制在一个位置,线条看起来会好很多。并且:一旦你开始使用 alpha 通道,即使是最好的 LineCaps 也会看起来非常难看..

于 2014-03-19T17:49:10.207 回答