Показать сообщение отдельно
  #3  
Старый 05.03.2010, 20:37
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Теорему пифагора знаем?
Начерти на бумажке 2 точки в произвольных местах и соедини их отрезком. Сделай проекции этого отрезка на оси. А теперь напиши формулу расчета длинны отрезка по координатам точек. Ну и сама подпись тоже делается легко - надо расчитать координаты середины отрезка и туда вывести соотв. длинну.

Код:
uses
  Math;

function GetLen(C1, C2 : Integer) : Integer;
begin
  Result := Max(C1,C2) - Min(C1,C2);
end;

var
  I, J : Integer;
  L : Double;
  Points = Array Of TPoint;
begin
  For I := Low(Points) To High(Points) Do
    For J := I + 1 To High(Points) Do
      Begin
         If I = J Then Continue;
         // Calc len
         L = Sqrt(sqr(GetLen(Points[i].X,Points[J].X)) + sqr(GetLen(Points[i].Y,Points[J].Y)));

         // draw. Self = TForm
         Self.Canvas.MoveTo(Points[i].X,Points[i].Y);
         Self.Canvas.LineTo(Points[J].X,Points[J].Y);
         // Лень высчитывать координаты серидины.
         Self.Canvas.TextOut(Points[i].X,Points[i].Y,FloatToStr(L));
      End;
end;