Das Problem ist aber ein anderes. Ich mu0 hier genau zeichen. Ich will ja eine Line von z.B. P1 nach P2 haben und nicht von P1 + Offset nach P2 - Offset?
Wenn die Linien dicker werden, dann geht das aber nicht so einfach.
Das Rechteck, dass von der Komponente mit Top, Left, Height und Width aufgespannt wird, darf auf keinen Fall überschritten werden. (das blaue Rechteck)
Die beiden Endpunkte einer Linie spannen ebenfalls ein Rechteck auf. (das rote Rechteck)
Dieses Rechteck muss bei diagonalen Linien jeweils um die halbe Linienbreite kleiner sein als das umgebende Rechteck der Komponente.
Du könntest der Komponente eine Methode spendieren, die das Rechteck der Komponente entsprechend vergrössert:
Delphi-Quellcode:
procedure TLine.InflateBoundingRect;
var
lw2 : integer;
begin
lw2 := LineWidth div 2;
// TODO: Fallunterscheidung bzgl. TLineAline bzw.TLineStyle
SetBounds(Left-lw2, Top-lw2, Width+lw2, Height+lw2);
end;