Das hab ich mal wieder nicht verstanden?
Ich lass es jetzt erst mal so. Der Benutzer kann ja dann mehrere Margins in das Polygon legen. Vermutlich ist es auch gar nicht möglich so wie ich wollte. Bei AutoCad muß man beim Ausrunden ja auch einen Bezugspunkt angeben.
Delphi-Quellcode:
procedure TPolygon.Inflate(const Value: double);
var
I, J: integer;
C: TFloatPoint;
Line: TFloatLine;
Lines: TFloatLines;
begin
Lines := TFloatLines.Create;
try
for I := 0 to FCount - 1 do
begin
J := Next(I);
Line.P1 := FItems[I];
Line.P2 := FItems[J];
Line.ShiftUV(0, Value);
Lines.Add(Line);
end;
Clear;
for I := 0 to Lines.Count - 1 do
begin
J := Lines.Next(I);
if Lines.Item[I].IntersectLines(Lines.Item[J], C) then
Add(C);
end;
finally
Lines.Free;
end;
end;