拐角的DrawLine偏移量

时间:2012-04-11 00:53:29

标签: c# .net graphics gdi+

我有一个允许用户操作不断增长的线(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 offset

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

请勿使用 DrawLine 命令绘制连接线。如果您在循环中逐个绘制它们但使用 DrawLines 命令将它们全部合并在一起,则行看起来要好得多。 并且:一旦你开始使用alpha通道,即使是最漂亮的LineCaps看起来也会很难看......