我有一组点代表一条线。它可能是封闭的形状或开放的形状。 我需要绘制一条平行线,除了原始线之外没有任何交点。绘制平行线
我有以下代码返回生成的行。我在形状的角度有问题。有一点可以超越原来的界限。
我的代码是:
PointF[] GetParrarel(PointF[] lst, double width, float distance)
{
List<PointF> final = new List<PointF>();
width = width + distance;
for (int i = 0; i < lst.Length-1 ; i++)
{
int index = i;
PointF current = lst[index];
PointF next = lst[index + 1];
double dx = next.X - current.X;
double dy = next.Y - current.Y;
PointF first = current;
PointF second = next;
if (dx > 0)
{
if (dy == 0)
{
first.Y += (float)width;
second.Y += (float)width;
}
first.X += (float)width;
second.X += (float)width;
}
else if (dx < 0)
{
if (dy == 0)
{
first.Y -= (float)width;
second.Y -= (float)width;
}
first.X -= (float)width;
second.X -= (float)width;
}
else //// X = 0
{
if (dy > 0)
{
first.X -= (float)width;
second.X -= (float)width;
}
else if (dy < 0)
{
first.X += (float)width;
second.X += (float)width;
}
else
{
continue;
}
}
final.Add(first);
final.Add(second);
}
return final.ToArray();
}
这是一个偶然的家庭作业.. ?? – MethodMan
'宽度'和'距离'是什么。在我看来,你只需要一个标量'offset'。 – ja72
可能重复http://stackoverflow.com/questions/845254/polyline-offset-with-closed-polygon-and-islands – ja72