Witam,
Mam problem z rysowaniem krzywej. Niby wszystko działa jeśli kod jest w osobnej procedurze i wywoływany przy przesuwaniu lini w MouseMove . Lecz jest mały mankament: Odświeżając komponent przy przerysowaniu płótna, linie strasznie migają.
Problem znika gdy rysowanie jest w .OnPaint lecz program wysypuje sie przy pobieraniu współrzędnych X1,X2,Y1... z tablicy obiektów Tlinia.
procedure TMainForm.Layout1Paint(Sender: TObject; Canvas: TCanvas;
const ARect: TRectF);
var
I : integer;
karteczka : TPathData;
X1,X2,Y1,Y2 : Single;
L : TLinia;
begin
if Line_index <> 0 then
Begin
for I := 1 to LineIndex do
begin
L := LineArray[I];
X1 := L.obiekt1.Position.X + Offset_lini_X;
Y1 := L.obiekt1.Position.Y + Offset_lini_Y;
X2 := L.obiekt2.Position.X + Offset_lini_X;
Y2 := L.obiekt2.Position.Y + Offset_lini_Y;
karteczka := TPathData.Create;
try
karteczka.MoveTo( TPointF.Create(X1,Y1));
karteczka.CurveTo(TPointF.Create(X1+(X2-X1)*0.3,Y1),
TPointF.Create(X2+(X1-X2)*0.3,Y2),
TPointF.Create(X2,Y2));
Canvas.Stroke.Color := TAlphaColors.Orange;
Canvas.BeginScene;
Canvas.Stroke.Thickness := 3;
Canvas.DrawPath(karteczka, 1);
Canvas.EndScene;
finally
karteczka.Free;
end;
end;
end;
end;
Nie mam pojęcia dlaczego nie mogę wyciągnąć danych z tej tablicy.