Ich erstelle z.Z eine TLine Klasse (Shape).
Dabei habe Ich folgendes Problem: Damit die Line vollständig in das Canvas hineinpasst, muß man beim Zeichnen der Linie Offsets abziehen. Wenn man das aber tut, wird die Linie zwar schön dargestellt (Siehe Paint), aber sie stimmt nicht mehr, weder Start- noch Endpunkt. Man sieht auch, daß der Winkel falsch ist (Siehe Anlage).
Ich müßte die ganze Komponente andersrum aufziehen. Zwei Eckpunkte vorgeben und die Komponentengröße wird dann entsprechend berechnet (statt die Linie einzupassen). Es wäre auch schön, wenn das auch schon zur Designzeit so angezeigt werden könnte.
Da ich von Grafikprogrammierung nur wenig Ahnung habe, wolle ich mal fragen, wie könnte man denn so was machen? TLine ist z.Z. von TGraphicControl abgeleitet?
Edit: Crosspost vergessen
http://forum.delphi-treff.de/showthr...Sets-erstellen
Delphi-Quellcode:
function TLine.OffSet1: integer;
begin
Result := FPen.Width
div 2;
end;
function TLine.OffSet2: integer;
begin
Result := OffSet1 + FPen.Width
mod 2;
end;
procedure TLine.Paint;
var
X1, Y1, X2, Y2: Integer;
begin
with Canvas
do
begin
Pen := FPen;
X1 := 0;
Y1 := 0;
X2 := Width;
Y2 := Height;
if X2 < 0
then
begin
Dec(X1, OffSet2);
Inc(X2, OffSet1);
end
else
begin
Inc(X1, OffSet1);
Dec(X2, OffSet2);
end;
if Y2 < 0
then
begin
Dec(Y1, OffSet2);
Inc(Y2, OffSet1);
end
else
begin
Inc(Y1, OffSet1);
Dec(Y2, OffSet2);
end;
MoveTo(X1, Y1);
LineTo(X2, Y2);
end;
end;
Zum besseren Verständnis hab ich einem Image die korrekte Line mal gezeichnet.