我有一个允许用户操作不断增长的线(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:
答案 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看起来也会很难看......